带有动态复选框的MVC3 Drop Down或ListBox

时间:2012-03-20 16:17:47

标签: asp.net-mvc-3 dynamic drop-down-menu checkbox

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

2 个答案:

答案 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控件位于

附近标记来实现
<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,可能不值得