Подтвердить что ты не робот

Почему это удалено: ASP.NET MVC CheckBoxList (без MVCContrib)

Почему CheckBoxList удален из предварительного просмотра ASP.NET MVC 5?

В настоящее время я не вижу способа, которым я могу создать список флажков (с похожими именами, но с разными идентификаторами), чтобы люди могли выбрать из списка 0-1-больше.

В библиотеке MVCContrib присутствует список CheckBoxList, но он устарел. Я могу понять это для других HtmlHelpers, но, похоже, нет замены для CheckBoxList в предварительном просмотре 5.

Я хотел бы создать очень простой список, как вы видите ниже, но что это лучший способ сделать это с помощью предварительного просмотра ASP.NET MVC 5?

<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="goed"> goed
<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="redelijk"> redelijk
<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="matig"> matig
<INPUT TYPE="checkbox" NAME="Inhoud" VALUE="slecht"> slecht
4b9b3361

Ответ 1

A для цикла в представлении для создания флажков

<% foreach(Inhoud i in ViewData["InhoudList"] as List<Inhoud>) { %>
  <input type="checkbox" name="Inhoud" value="<%= i.name %>" checked="checked" /> <%= i.name %>
<% } %>   

Не используйте Html.Checkbox, так как это приведет к генерации двух значений для каждого элемента в списке (поскольку он использует скрытый ввод для ложных значений)

Ответ 2

Недавно я писал о реализации помощника CheckBoxList в бета-версии MVC. Вот ссылка.

Ответ 3

У меня есть собственная реализация CheckListBox, которая поддерживает ModelState. Если вас это интересует в Un CheckBoxList que funciona en ASP.NET MVC. Сообщение написано на испанском языке, но у вас не должно быть никаких проблем с чтением кода.

Что интересно в решении Иеремии, так это то, что вы можете установить начальное состояние флажков, что вы не можете сделать с моим CheckListBox.

Ответ 4

Я рекомендую использовать расширение JeremiahClark, указанное выше. (CheckBoxList)

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

        var rolesList = new List<CheckBoxListInfo>();
        foreach (var role in Roles.GetAllRoles())
        {
            rolesList.Add(new CheckBoxListInfo(role, role, Roles.IsUserInRole(user.UserName, role)));
        }
        ViewData["roles"] = listaRoles;

И в представлении:

<div><%= Html.CheckBoxList("roles", ViewData["roles"]) %></div>

Что все.