Asp.net mvc 3 MVC3下拉列表或带有动态复选框的列表框

Asp.net mvc 3 MVC3下拉列表或带有动态复选框的列表框,asp.net-mvc-3,dynamic,drop-down-menu,checkbox,Asp.net Mvc 3,Dynamic,Drop Down Menu,Checkbox,我有一个MVC3 C#.Net web应用程序。我需要根据数据库中的表动态显示复选框列表(下拉列表或列表框)。该表可以包含1:500个条目。然后,我需要将选中的复选框传递给控制器,以便对每个选择执行操作。有关于实现的想法吗?有很多方法,但这里是一个通用演示 您可以在Model(如本例所示)、ViewData[“”]字典或ViewBag(MVC3+)上传递复选框值和说明的列表 然后在视图中循环浏览它们,并使用name=“chxBxGroupName”将它们添加到表单中进行分组 现在,创建一个控制器

我有一个MVC3 C#.Net web应用程序。我需要根据数据库中的表动态显示复选框列表(下拉列表或列表框)。该表可以包含1:500个条目。然后,我需要将选中的复选框传递给控制器,以便对每个选择执行操作。有关于实现的想法吗?

有很多方法,但这里是一个通用演示

您可以在
Model
(如本例所示)、
ViewData[“”]
字典或
ViewBag
(MVC3+)上传递复选框值和说明的列表

然后在视图中循环浏览它们,并使用name=“chxBxGroupName”将它们添加到表单中进行分组

现在,创建一个控制器操作,该操作采用值类型的
列表
(在本例中为
int
),参数命名与name=“chxBxGroupName”匹配

它将发布一个检查值列表

文章页面将仅打印出:

123
456

//这是您的登录页。它收集数据以复选框的形式显示给用户。
使用复选框()公开查看结果MyPage
{
//例如:假设字典中有复选框值和说明
//替换为数据库调用等。
返回视图(新字典{123,“Foo”},{456,“Bar”});
}





public ContentResult MyPost(列表chxBxGroupName)
{
返回内容(string.Join(Environment.NewLine,chxBxGroupName??newlist()),“text/plain”);
}

Jay提供的答案正好满足您的需要。如果要将项目放入列表中,可以使用下面的div控件包围标记

<div style="height:40px;overflow:auto;">
    <%  foreach (var item in Model) { %> 
            <input type="checkbox" id="chxBx<%=item.Key%>" name="chxBxGroupName" value="<%=item.Key% >"/> 
            <label for="chxBx<%=item.Key%>"><%=item.Value%></label> 
            <br/><br/> 
    <%  } %>   
</div>




不幸的是,在
中不能有复选框,但是如果你真的想让它看起来像一个选择列表,你可以添加一些JQuery来处理文本框的点击并显示div。这显然需要一些JQuery,可能不值得这样做

@Jay…谢谢。看起来很能干。你知道是否有可能在下拉列表中插入复选框吗?@MikeTWebb Sorta,我所知没有内置内容。例如,有jQuery插件可用于此目的:或者您可以推出自己的解决方案。
<%@ Page Title="" Language="C#" Inherits="System.Web.Mvc.ViewPage<Dictionary<int,string>>" %>

<!-- Rest of HTML page... -->

<form id="frm1" action="<%=Url.Action("MyPost")%>" method="post">
<%  foreach (var item in Model) { %>
        <input type="checkbox" id="chxBx<%=item.Key%>" name="chxBxGroupName" value="<%=item.Key%>"/>
        <label for="chxBx<%=item.Key%>"><%=item.Value%></label>
        <br/><br/>
<%  } %>    
    <input type="submit" value="Go!"/>
</form>

<!-- Rest of HTML page... -->
public ContentResult MyPost(List<int> chxBxGroupName)
{
    return Content(string.Join(Environment.NewLine, chxBxGroupName ?? new List<int>()), "text/plain");
}
<div style="height:40px;overflow:auto;">
    <%  foreach (var item in Model) { %> 
            <input type="checkbox" id="chxBx<%=item.Key%>" name="chxBxGroupName" value="<%=item.Key% >"/> 
            <label for="chxBx<%=item.Key%>"><%=item.Value%></label> 
            <br/><br/> 
    <%  } %>   
</div>