如何在列表类型模型mvc 5中动态绑定复选框

时间:2017-03-28 12:00:14

标签: .net asp.net-mvc c#-4.0

我有一个班级

public class CustomBenefitCommittee
    {
        public int PlanOptionId { get; set; }
        public bool IsChecked { get; set; }
        public string PlanOptionName { get; set; }
    }

我在razer视图中把这个类作为模型的列表类型

@model List<MIHR.Business.CustomClasses.CustomBenefitCommittee>
@{
    int Counter = 0;
}

<table class="table table-bordered" id="tblPlanLst">
        <thead>
            <tr>
                <th>
                     select
                </th>
                <th>
                    Benefit Option
                </th>

            </tr>
        </thead>

        <tbody>

            @foreach (var Enrol in Model)
            {
                <tr>
                    <td> <input type="checkbox" name="customBenefitCommittee[@Counter].IsChecked"  class="clsCheck" /></td>
                    <td>
                        @Enrol.PlanOptionName
                    </td>

                </tr>
                        Counter++;
            }

        </tbody>
    </table>
<input type="submit" id="btnSubmitSave" value="Save" name="buttonType" class="btn btn  btn-primary">

现在当我将此表单发布到控制器并选中复选框时,我在此复选框IsChecked属性中始终为false。 任何人都可以帮助我。

2 个答案:

答案 0 :(得分:1)

您也可以这样使用:

@{
    var IsChecked = "";
    if (Enrol.IsChecked == true)
    {
        IsChecked = "checked='checked'";
    }
}
<input type="checkbox" name="customBenefitCommittee[@Counter].IsChecked" @IsChecked value="true" />

如果选中此复选框,则会true,如果未选中复选框,则会null

public class CustomBenefitCommittee
    {
        public int PlanOptionId { get; set; }
        public bool? IsChecked { get; set; }
        public string PlanOptionName { get; set; }
    }

或者你也可以这样使用:

@Html.CheckBox("customBenefitCommittee[" + Counter + "].IsChecked", Enrol.IsChecked ?? false, new { @class = "clsCheck" })

或者你也可以这样使用:

@Html.CheckBoxFor(model => model[@Counter].IsChecked)

答案 1 :(得分:1)

RAJNIK PATEL的回答解决了我的问题。

我有一个视图模型,该视图模型在选项卡式页面上包含其他视图模型。每个选项卡都是不同的视图模型。提交后,所有标签都将保存。

要获得一组动态生成的复选框,我必须使名称指示我使用的viewmodel中的正确视图模型。

public class AViewModel{
    public AnotherViewModel {get;set;}
}

因此,由类型的循环生成的我的复选框如下所示。 checkboxid是我的名字。

 @Html.CheckBox("ModifyRolePermViewModel." + checkboxid)