Поддерживать состояние динамического списка флажков в ASP.NET MVC

У меня есть класс с именем «PropertyFeature», который просто содержит PropertyFeatureID и Description. Это правильная модель, созданная с помощью LINQ to SQL, сопоставленная с таблицей базы данных SQL Server. Пример экземпляра / строки будет:

PropertyFeatureID: 2
Description: "Swimming Pool"

Количество строк (PropertyFeatures), конечно, может увеличиваться и уменьшаться, и поэтому я хочу динамически отображать список флажков, чтобы пользователь мог выбрать любой из них. Я могу достаточно легко динамически визуализировать флажки, например:

<%foreach (var Feature in (ViewData["Features"] as IEnumerable<MySolution.Models.PropertyFeature>)) { %>
<%=Html.CheckBox("Features", new { @id = Feature.PropertyFeatureID, @value = Feature.PropertyFeatureID })%><label for="Feature<%=Feature.PropertyFeatureID%>"><%=Feature.Description%></label>
<%}%>

Я указываю идентификатор для каждого флажка и отображаю соответствующий ярлык, чтобы пользователь мог интуитивно щелкнуть ярлык и переключить флажок - это прекрасно работает.

Я установил «имя» в CheckBox как «Возможности», чтобы все флажки отображались с одинаковыми именами, и связыватель моделей MVC объединяет их в одну коллекцию под названием «Функции» при публикации формы. Это хорошо работает.

После отправки формы я использую отмеченные значения и сохраняю их, поэтому мне нужны фактические целочисленные значения, чтобы я знал, какая именно PropertyFeature выбрана, а не просто куча логических значений и имен полей. Поэтому в идеале я хочу, чтобы это был массив или коллекция, с которой легко работать.

Я могу извлечь выбранные значения из моего метода Controller при нажатии кнопки, потому что я указал параметр как int [] Features.

Но проблема в том, что он не поддерживает состояние. То есть, когда я нажимаю кнопку отправки и страница перезагружается (с вновь отображенной формой), я хочу, чтобы все динамические флажки сохранили свой отмеченный статус (или нет). Все остальные поля, которые я создал сHtml.DropDownList а такжеHtml.TextBox все успешно поддерживают свои состояния без проблем на одной странице в одной форме.

Я провел часы, читая все другие темы и статьи по аналогичным вопросам, и много говорят об использованииICollection а такжеIDictionary связать вещи и включить логическое значение для каждого элемента, чтобы он мог поддерживать состояние флажка. Но я не на 100% понимаю, как использовать это в контексте моего личного примера. Я хотел бы, чтобы решение было действительно простым и не нужно было кодировать страницы новых классов просто для того, чтобы поддерживать мое состояние флажка.

Какой самый чистый и правильный способ сделать это?

Ответы на вопрос(2)

Ваш ответ на вопрос