19

为什么从 ASP.NET MVC 预览版 5 中删除CheckBoxList ?

目前,我看不到任何方式可以创建复选框列表(名称相似但 ID 不同),因此人们可以从列表中选择 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

4 回答 4

19

视图中用于生成复选框的 for 循环

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

不要使用Html.Checkbox,因为这将为列表中的每个项目生成两个值(因为它使用隐藏输入来表示错误值)

于 2008-10-14T14:35:37.763 回答
7

我最近写了一篇关于在 MVC Beta 中实现 CheckBoxList 助手的博客。链接在这里。

于 2008-11-11T02:37:59.217 回答
1

我有自己的 CheckListBox 实现,它支持 ModelState。如果您有兴趣,请查看Un CheckBoxList que funciona en ASP.NET MVC。这篇文章是西班牙语的,但你在阅读代码时应该没有任何问题。

Jeremiah 解决方案的有趣之处在于,您可以设置复选框的初始状态,而我的 CheckListBox 无法做到这一点。

于 2009-07-05T04:27:18.200 回答
0

I recommend using JeremiahClark extension posted above. (CheckBoxList)

My controller resulted into very simple instructions. For clarify I add a fragment of my code that's absent in the sample.

        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;

And in the view:

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

That's all.

于 2009-04-01T15:58:27.470 回答