我有一个MVC3 C#.Net网络应用程序。我需要根据数据库中的表动态显示复选框列表(在下拉列表或列表框中)。该表可以包含1:500条目。然后,我需要将选定的复选框传递给Controller,以便对每个选择执行操作。关于实施的任何想法?
答案 0 :(得分:1)
有很多方法可以解决这个问题,但这是一个普通的演示。
您可以在Model
(如本例所示),ViewData[""]
字典或ViewBag
(MVC3 +)上传递复选框值和说明的列表。
然后在您的视图中循环浏览它们并使用name =“ chxBxGroupName ”将它们添加到表单中。
现在创建一个要发布到的控制器操作,它采用List
值类型(在此示例中为int
),其参数命名与name =“ chxBxGroupName 匹配”
它会发布一个已检查值的列表。
帖子页面只会打印出来:
123
456
// This is your landing page. It gathers the data to display to the user as checkboxes.
public ViewResult MyPageWithTheCheckboxes()
{
// For example: Assume a Dictionary with the checkbox value and description
// Replace with DB call, etc.
return View(new Dictionary<int, string> { { 123, "Foo" }, { 456, "Bar" } });
}
<%@ 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");
}
答案 1 :(得分:0)
<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>
很遗憾,你不能在<select />
中拥有复选框,但是如果你真的希望它看起来像一个选择列表,你可以添加一些处理onmplick文本框的JQuery并显示div。这显然需要一些jQuery,可能不值得