2

情况就是这样,我有一个 ClassA,其中包含 ClassB 对象的列表。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> 

        }
   ``...
     }
4

1 回答 1

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 助手将为相应的输入字段生成正确的名称,以便默认模型绑定器能够在您提交表单时正确绑定它。

于 2013-11-06T16:15:46.060 回答