#c# #asp.net-mvc
#c# #asp.net-mvc
Вопрос:
Сейчас я немного пытаюсь выяснить, как успешно определить, был ли мой поиск успешным в своем поиске или он потерпел неудачу. Я должен регистрироваться, когда поиск завершается неудачно, иначе когда он ничего не находит внутри списка. Я предполагаю, что это как-то связано с решением try / catch. Извините, если это чрезвычайно глупый вопрос, но я искал вокруг и, похоже, не могу найти способ найти способ, если поиск возвращается без данных. Приведенный ниже код — это код, который я использую для поиска по всему списку страниц.
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, pageNumber, 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 pageIndex, 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);
}
}
Комментарии:
1. Опубликованный код на самом деле не имеет большого смысла — этот блок try / catch пуст, и ваше действие в журнале происходит до того, как вы что-либо сделаете. Вы пытаетесь определить, является ли результат
PaginatedList
пустой коллекцией или чем-то еще?2. Да, я пытаюсь выяснить, является ли список страниц пустой коллекцией. Если он пуст, тогда журнал будет запущен и скажет, что это ошибка.
Ответ №1:
Я использовал для его регистрации. Не уверен, как использовать try / catch с этим, но это работает для моего решения.
if (game.Count() == 0)
{
_logger.Log(LogLevel.Warning, (EventId)404, "Search string failed while trying to search for {searchString}", searchString);
}