为啥被删除:ASP.NET MVC CheckBoxList(没有 MVCContrib)

Posted

技术标签:

【中文标题】为啥被删除:ASP.NET MVC CheckBoxList(没有 MVCContrib)【英文标题】:Why is it removed: ASP.NET MVC CheckBoxList (without MVCContrib)为什么被删除:ASP.NET MVC CheckBoxList(没有 MVCContrib) 【发布时间】:2010-09-17 02:45:02 【问题描述】:

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

目前我看不到任何方法可以创建复选框列表(名称相似但 ID 不同),以便人们可以从列表中选择 0-1 多个选项。

在 MVCContrib 库中有一个 CheckBoxList 列表,但它已被弃用。对于其他 htmlHelpers,我可以理解这一点,但在预览版 5 中似乎没有替代 CheckBoxList

我想创建一个非常简单的列表,如下所示,但是使用 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

【问题讨论】:

对于最干净、无忧的解决方案,an answer to Stack Overflow question Maintain state of a dynamic list of checkboxes in ASP.NET MVC 效果很好。我也同意第一个答案,我不会碰Html.CheckBox。它带来的问题多于解决的问题。 你可以使用这里的:awesome.codeplex.com 相关:Maintain state of a dynamic list of checkboxes in ASP.NET MVC 【参考方案1】:

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

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

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

【讨论】:

我收到错误,因为无法将 ViewData 转换为通用列表 (List)...为什么要这样做?【参考方案2】:

我最近写了一篇关于在 MVC Beta 中实现 CheckBoxList 助手的博客。 Here is the link.

【讨论】:

【参考方案3】:

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

Jeremiah 解决方案的有趣之处在于您可以设置复选框的初始状态,而我的 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>

就是这样。

【讨论】:

以上是关于为啥被删除:ASP.NET MVC CheckBoxList(没有 MVCContrib)的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试使用 EF 在 ASP.NET MVC5 中查询视图时,为啥会收到错误“数据库 'ELITEPROD' 中的 CREATE TABLE 权限被拒绝”?

[Asp.net mvc]实体更新异常:存储区更新插入或删除语句影响到了意外的行数。实体在加载后可能被修改或删除。

ASP.NET-MVC5 - 为啥 Bootstrap v4 主题不能正确显示组件?

为啥 ASP.NET MVC 中的超时时间很短?

为啥 ASP.NET MVC 中的 SessionID 不断变化?

为啥我的 SelectListItem 无法编辑 ASP.NET Core MVC