У меня есть страница поиска, которая не форма, и она упрощена до следующего.
Моя модель выглядит следующим образом:
public class SearchCategory
{
public string Category { get; set; }
}
public class SearchViewModel
{
public string Category { get; set; }
public List<SearchCategory> Categories { get; set; }
}
InНа мой взгляд, мой ActionLink выглядит следующим образом:
@Html.ActionLink("Displaytext", "Search", "Explore", new { category = "SomeValue", categories = Model.Categories }, null)
ActionResult моего контроллера выглядит следующим образом:
public ActionResult Search(string category, List<SearchCategory> categories)
{
SearchViewModel SearchModel = new SearchViewModel();
if (category == null) { SearchModel.Category = "All Entries"; } else { SearchModel.Category = category; }
if (SearchModel.Category == "All Entries")
{
SearchModel.Categories = new List<SearchCategory>();
}
else
{
SearchModel.Categories = categories;
}
SearchCategory c = new SearchCategory();
c.Category = SearchModel.Category;
if (SearchModel.Category != "All Entries")
{
if (SearchModel.Categories.Contains(c))
{
//do nothing, because the categories list already contains this category
}
else
{
SearchModel.Categories.Add(c);
}
}
return View(SearchModel);
}
В моем контроллере ActionResult
я добавляю элементы в categories
list, и я могу видеть это как заполненный список, если я ставлю точку останова на ActionLink
, когда он снова входит в представление. Моя проблема заключается в том, что ActionResult
получает пустой указатель вместо заполненного списка, переданного из представления при повторном входе в контроллер.
Что я делаю неправильно? Мне обязательно нужно настроить эту страницу поиска как форму, или есть какой-то способ заставить представление передать заполненный список обратно в контроллер?