Html.LabelFor始终显示属性名称而不是值

5 razor asp.net-mvc-4

在我的MVC4项目中,我正在显示Checkbox它的相应内容,Label以便在单击标签时将检查相应的复选框.但是,当我使用@Html.LabelFor它时,它显示属性名称而不是显示其值.此外,当我单击标签时,不会检查相应的复选框.这有什么不对?

@for (int i = 0; i < Model.AddOns.Count; i++)
{
    @Html.CheckBoxFor(m => m.AddOns[i].IsActive)
    @Html.LabelFor(m => m.AddOns[i].Name)
    @Html.HiddenFor(m => m.AddOns[i].Id)
}
Run Code Online (Sandbox Code Playgroud)

当我使用DisplayFor它时显示值,但没有选中复选框,点击标签.

Sim*_*n C 5

您希望标签与复选框相关IsActive,但要读取标签Name.所以LabelFor应该引用IsActive属性,标签字符串作为第二个参数传入.

我想你想要这个:

@for (int i = 0; i < Model.AddOns.Count; i++)
{
    @Html.CheckBoxFor(m => m.AddOns[i].IsActive)
    @Html.LabelFor(m => m.AddOns[i].IsActive, Model.AddOns[i].Name)
    @Html.HiddenFor(m => m.AddOns[i].Id)
}
Run Code Online (Sandbox Code Playgroud)