MVC5: возникли проблемы с совместной фильтрацией результатов и нумерацией страниц

#c# #asp.net-mvc-5

#c# #asp.net-mvc-5

Вопрос:

У меня есть представление индекса (список), к которому я добавил нумерацию страниц, и он работает отлично. У меня есть другие представления (списки), в которых есть окно поиска html, которое передает значение обратно в контроллер и также отлично работает. Но, когда я пытаюсь использовать оба в одном представлении. . Я получаю ошибку нулевой ссылки.

Значение сообщения об ошибке не может быть нулевым. Имя параметра: значение

Это строка, генерирующая ошибку:

 var catalogs = supplies.Where(s => s.ItemDescription.Contains(searchString));
  

Это окно поиска asp / html в индексном представлении

 form asp-controller="Movies" asp-action="Index">
<p>
    Search Catalog Files: <input type="text" name="SearchString">
    <input type="submit" value="Filter" />
</p>
  

И это мой контроллер индекса, который имеет нумерацию страниц и строку поиска

  public ActionResult Index(string searchString)
    {



         var supplies = db.ICS_Supplies.OrderByDescending(g => g.Supplies_ID).ToList();
        var catalogs = supplies.Where(s => s.ItemDescription.Contains(searchString));
        var model = new PagedList<ICS_Supplies>(catalogs, 1, 10);

        if (!String.IsNullOrEmpty(searchString))
         {

            catalogs = catalogs.Where(s => s.ItemDescription.Contains(searchString));
         }
        return View(model);

    }
  

Имеет ли это какое-либо отношение к асинхронности? Нужно ли мне использовать следующее?

 public async Task<ActionResult> Index(string searchString)
  

Или, возможно, у меня все в неправильном порядке? Страница работает нормально, ЕСЛИ в текстовом поле searchString есть текст. . но когда страница пытается загрузиться в первый раз, происходит сбой.

Какие-либо указатели?

Ответ №1:

Перед выполнением вы можете проверить, имеет ли строка поиска значение null

 var catalogs = supplies.Where(s => s.ItemDescription.Contains(searchString ?? string.Empty));
  

Комментарии:

1. Спасибо! Это сделало свое дело. Я действительно ценю вашу помощь.