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

时间:2013-06-25 04:30:06

标签: asp.net-mvc-4 razor

在我的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)
}

当我使用DisplayFor时,它会显示值,但不会在点击标签时检查复选框。

1 个答案:

答案 0 :(得分: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)
}