复选框携带值但不携带标题

Checkbox carries the value but not the title

我有一个多对多的关系,我已经实现并完美地工作,现在我想在一个可以在中间插入数据的实体的 "insert" 页面上有一组复选框 table.

我有一个 ViewModel,其中包含以下数组 class:

class CategoryManager {
   public int id { get; set; }
   public string Title { get; set; }
   public bool Checked { get; set; }
}

在视图中,我使用以下行为每个数组成员创建复选框:

for (int i = 0; i < Model.categories.Count(); i++)
    {
        @Html.CheckBoxFor(m => m.categories[i].Checked)<i>&nbsp</i>
        @Model.categories[i].Title <br/>
    }

现在我注意到的是,当页面被提交并且整个 ViewModel 被发送回控制器时,在 "CategoryManager"s 的数组中,每个实例都有 ID 和 "Checked" 正确通过(取决于用户是否标记了复选框),但是,所有这些的 "Title" 都是 NULL。

我知道这应该是我缺少的一个非常基本的东西,但我是新手 ;)

非常感谢您!

您没有为 属性 Title(或 ID 生成控件,所以不确定您是如何回发的)。为 Title 属性

添加隐藏输入
for (int i = 0; i < Model.categories.Count; i++)
{
    @Html.CheckBoxFor(m => m.categories[i].Checked)
    @Html.LabelFor(m => m.categories[i].Checked, "Model.categories[i].Title")
    @Html.HiddenFor(m => m.categories[i].ID)
    @Html.HiddenFor(m => m.categories[i].ID)
}

请注意使用 LabelFor() 创建与复选框关联的标签。