Почему это удалено: ASP.NET MVC CheckBoxList (без MVCContrib) - PullRequest
19 голосов
/ 14 октября 2008

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

В настоящее время я не вижу способа, с помощью которого я могу создать список флажков (с похожими именами, но разными идентификаторами), чтобы люди могли выбирать из списка 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

Ответы [ 4 ]

19 голосов
/ 14 октября 2008

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

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

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

7 голосов
/ 11 ноября 2008

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

1 голос
/ 05 июля 2009

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

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

0 голосов
/ 01 апреля 2009

Я рекомендую использовать расширение 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>

Вот и все.

...