@ Html.CheckBoxFor不会改变变量的值

时间:2013-11-06 16:09:31

标签: asp.net asp.net-mvc-4

这是情况,我有一个包含ClassB对象列表的ClassA。 ClassB有3个变量,一个是int,一个bool和一个字符串。我在列出它时尝试更改bool变量(在视图中使用foreach)。列表部分运行顺畅(我可以选择要检查的复选框),但是用户选择的复选框的值不会被记住。

这是一个视图模型:

@model ClassA
...

@using (Html.BeginForm("Upload", "Registration", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
       ...
      <p>Your name: @Html.TextBoxFor(x => x.FirstName) </p>
      <p>Adress:             @Html.TextBoxFor(x => x.Adress)</p> 

      foreach (ClassB check in Model.ClassBlist)
      {

      <p>@check.Name:@Html.CheckBoxFor(x=>check.attributeChecked,check.itemID)</p> 

        }
   ``...
     }

1 个答案:

答案 0 :(得分:2)

试试这样:

for (var i = 0; i < Model.ClassBlist.Count; i++)
{
    <p>
       @Html.DisplayFor(x => x.ClassBlist[i].Name)
       :
       @Html.CheckBoxFor(
           x => x.ClassBlist[i].attributeChecked, 
           Model.ClassBlist[i].itemID
       )
    </p> 
}

这次CheckBoxFor帮助器将为相应的输入字段生成正确的名称,以便默认模型绑定器能够在您提交表单时正确绑定它。