微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

记录失败的分页列表搜索

如何解决记录失败的分页列表搜索

我现在一直在尝试弄清楚如何成功判断我的搜索是成功还是失败了。我应该在搜索失败时记录,也就是在列表中找不到任何内容时。我认为这与 try/catch 解决方案有关。对不起,如果这是一个非常愚蠢的问题,但我一直在环顾四周,如果搜索返回没有数据,我似乎无法找到一种方法。 下面的代码是我用来搜索整个 PaginatedList 的代码

public async Task<IActionResult> Index(string sortorder,int pageNumber = 1,string searchString = "",string searchString2 = "",string searchString3 = "")
        {
            var game = from g in _context.Cheats
                           select g;

            ViewData["PlatformSortParam"] = String.IsNullOrEmpty(sortorder) ? "platform_sort" : "";//default sort
            ViewData["CurrentFilter"] = searchString;
            ViewData["CurrentFilter2"] = searchString2;
            ViewData["CurrentFilter3"] = searchString3;


            if (!String.IsNullOrEmpty(searchString))
            {
                game = game.Where(b => b.Game.Contains(searchString));

                try
                {

                }
                catch(Exception ex)
                {

                }

                _logger.Log(LogLevel.Warning,(EventId)404,"Search string Failed while trying to search for {searchString}",searchString);
            }

            if (!String.IsNullOrEmpty(searchString2))
            {
                game = game.Where(b => b.CheatName.Contains(searchString2));
            }

            if (!String.IsNullOrEmpty(searchString3))
            {
                game = game.Where(b => b.Platform.Contains(searchString3));
            }

            return View(await PaginatedList<Cheats>.CreateAsync(game,pageNumber,10));


            //return View(await PaginatedList<Cheats>.CreateAsync(_context.Cheats,10));
        }

这是PaginatedList类的代码

public class PaginatedList<T> : List<T>
    {
        public int PageIndex { get; private set; }
        public int TotalPages { get; set; }
        public PaginatedList(List<T> items,int count,int pageIndex,int pageSize)
        {
            PageIndex = pageIndex;
            TotalPages = (int)Math.Ceiling(count / (double)pageSize);
            this.AddRange(items);
        }
        public bool PrevIoUsPage
        {
            get
            {
                return (PageIndex > 1);
            }
        }

        public bool NextPage
        {
            get
            {
                return (PageIndex < TotalPages);
            }
        }

        public static async Task<PaginatedList<T>> CreateAsync(IQueryable<T> source,int pageSize)
        {
            var count = await source.CountAsync();
            var items = await source.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync();
            return new PaginatedList<T>(items,count,pageIndex,pageSize);
        }
    }

解决方法

我用来记录它。不确定如何使用 try/catch 仍然如此,但这适用于我的解决方案。

if (game.Count() == 0)
                {
                    _logger.Log(LogLevel.Warning,(EventId)404,"Search string failed while trying to search for {searchString}",searchString);
                }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。