Я довольно новичок в MVC, поэтому, пожалуйста, не стесняйтесь предлагать лучший / чище / проще способ достижения того, что я пытаюсь сделать в более дружественной манере "MVC".
Здесь идет ...
Чтобы сделать это проще, я приведу конкретный пример с использованием фильмов и жанров. Жанр может быть связан со многими фильмами. Жанры могут увеличиваться со временем, как и фильмы.
Вариант использования следующий. Пользователь хочет отфильтровать фильмы, выбрав желаемый жанр.
Итак, у меня есть страница, где вверху есть раздел, где пользователь может выбрать любую комбинацию жанров для фильтрации с помощью флажков. Ниже приведен список фильмов в этих жанрах.
В MVC я пытаюсь реализовать это, используя ViewPage (из IDictionary (Genre, Boolean)), где логическое значение указывает, был ли выбран определенный жанр для фильтрации.
Затем я вхожу в цикл, который создает флажки для их выбора:
<% for each genre As KeyValuePair(Of Genre, Boolean) in Model %>
<%=Html.Hidden("genre[" & i & "].Key", genre.Key.ID)%>
<%=Html.CheckBox("genre[" & i & "].Value", genre.Value)%>
<%=Html.TextBox("genre[" & i & "].Key.Name", genre.Key.Name)%>
<% Next %>
Я убрал все форматирование, чтобы сосредоточиться на сути проблемы.
Таким образом, в словаре жанра. Значение будет возвращать, установлен флажок или нет.
После этого появляется фрагмент кода, который отображает список фильмов в зависимости от того, какие жанры были выбраны.
Моя проблема в том, что когда я пытаюсь отправить обратно (пока не пользуюсь Ajax), в словаре действия отображается значение Null:
<AcceptVerbs(HttpVerbs.Post)> _
Function FilterSelected(ByVal selectedGenres As IDictionary(Of MarketCategory, Boolean)) As ActionResult
Return View("Index", theView)
End Function
Может кто-нибудь сказать мне, что мне не хватает? Кроме того, я знаю, что это можно сделать с помощью Ajax, и я, скорее всего, сделаю это с помощью Ajax, но мне все равно хотелось бы знать, почему это не работает.
Спасибо; -)