MVC4:单击按钮时将复选框值发送为HtmlAttributes

时间:2014-12-11 16:32:25

标签: javascript jquery html asp.net-mvc-4

我的MVC4网页上有一个复选框列表,这些复选框的生成如下:

<div style="float: left; padding-left: 5px; padding-right: 5px">
    <br />
    <h3>@Html.Label("Type de service")</h3>

    @foreach (var serviceType in Model.ServiceTypeList)
    {
        <label>@Html.CheckBox(serviceType.ServiceTypeId.ToString(CultureInfo.InvariantCulture)) @serviceType.Description</label><br />
    }

    <br />
    <h3>@Html.Label("Type d'application")</h3>
    @foreach (var appType in Model.ApplicationTypeList)
    {
        <label>@Html.CheckBox(appType.ApplicationId.ToString()) @appType.ApplicationName</label><br />
    }
    <br />
</div>

我现在要做的是,当点击一个按钮时,将两个复选框列表中的每一个复选框发送回服务器,其中包含一个键/值对,其中包含复选框的ID和一个布尔值。 #39; s值:

<div style="float: left; padding-left: 15px; padding-right: 5px;">
    @using (Html.BeginForm("Filter", "Customer", FormMethod.Post, new Dictionary<string, bool>
        {}))
    {
        <input id="btnFilter" type="submit" value="Filter" />
    }
</div>

动态获取两个列表的值并将它们发送到服务器的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

这样的东西应该有用,它会创建2个数组(每个列表一个)被构造为 [ID-布尔,ID-布尔,ID-布尔,ID-布尔,]:

<script>
    $(function() {
        $("#button").click(function() {
            var listOneArray = [];
            var listTwoArray = [];

            $("#listOne input[type='checkbox']").each(function() {
                var a1 = $(this).attr("id");
                var b1 = $(this).prop("checked");
                listOneArray.push(a1 + "-" + b1.toString());
            });

            $("#listtwo input[type='checkbox']").each(function () {
                var a2 = $(this).attr("id");
                var b2 = $(this).prop("checked");
                listTwoArray.push(a2 + "-" + b2.toString());
            });

            $.post("Yourcontroller/YourAction", { list1: listOneArray, list2: listTwoArray }, function (data) {
                //do whatever with the response

            });

        });
    });
</script>