我为我的ViewModel
班级定制了 EditorTemplate(它会生成一个复选框列表)。
在视图中我的模型是IEnumerable<ViewModel>
,但是当我调用@Html.EditorForModel()
生成的标签的 HTMLfor
属性时label
是空的。
当我只想渲染一个复选框时,一切正常。
public class StateViewModel
{
public int Id { get; set; }
public string Name { get; set; }
public bool Checked { get; set; }
}
编辑器模板:
@model Mcs.Sibs.UI.Web.Models.StateViewModel
@Html.HiddenFor(x => x.Id)
<div>
@Html.CheckBoxFor(x => x.Checked)
@Html.LabelFor(x => x.Checked, Model.Name)
</div>
我的观点:
@model IEnumerable<Mcs.Sibs.UI.Web.Models.StateViewModel>
@using (Html.BeginForm()
{
@Html.EditorForModel()
}
生成的 HTML 如下所示(对于一个复选框):
<input type="hidden" value="1" name="[0].Id" data-val-required="The Id field is required." data-val-number="The field Id must be a number." data-val="true">
<div>
<input type="checkbox" value="true" name="[0].Checked" data-val-required="The Checked field is required." data-val="true">
<input type="hidden" value="false" name="[0].Checked">
<label for="">Checkbox label</label>
您可以看到“for”属性为空。我做错了什么还是这是 MVC3 默认EditorTemplate
的某种错误IEnumerable<T>
?