#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. Спасибо! Это сделало свое дело. Я действительно ценю вашу помощь.