MVC5: проблемы с фильтрацией результатов и разбиением на страницы вместе - PullRequest
2 голосов
/ 16 апреля 2019

У меня есть индексное представление (список), к которому я добавил нумерацию страниц, и оно отлично работает. У меня есть другие представления (списки), которые имеют окно поиска 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>

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

 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 Ответ

2 голосов
/ 16 апреля 2019

Вы можете проверить, является ли searchString нулевым, перед выполнением

var catalogs = supplies.Where(s => s.ItemDescription.Contains(searchString ?? string.Empty));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...