【发布时间】:2012-02-20 09:49:45
【问题描述】:
我正在尝试制作一个复选框列表,但 Html.LabelFor 不起作用。
它不断生成<label for="">Some text</label>,注意空的For 属性。
在尝试使用显示模板之前,我尝试了 for 和 foreach 循环,但它们都有这个问题。 我拒绝相信手写输入字段是唯一的解决方案。 非常感谢所有帮助/提示。
模型:
public class MyViewModel
{
public string Name { get; set; }
public bool Selected { get; set; }
}
控制器:
public ActionResult MyController()
{
var model = new List<MyViewModel>();
model.Add(new MyViewModel() { Name= "Foo" });
model.Add(new MyViewModel() { Name= "Bar" });
return View(model);
}
视图:
@model IEnumerable<MyViewModel>
<div>
@Html.DisplayFor(x => Model)
</div>
显示模板:
@model MyViewModel
<p>
@Html.LabelFor(model => model.Selected, Model.Name)
@Html.EditorFor(model => model.Selected)
</p>
结果:
<div>
<p>
<label for="">Foo</label>
<input class="check-box" data-val="true" data-val-required="The Foo field is required."
name="[0].Selected" type="checkbox" value="true" />
<input name="[0].Selected" type="hidden" value="false" />
</p>
<p>
<label for="">Bar</label>
<input class="check-box" data-val="true" data-val-required="The Bar field is required."
name="[1].Selected" type="checkbox" value="true" />
<input name="[1].Selected" type="hidden" value="false" />
</p>
<div>
如您所见,<label> 未按预期工作。
【问题讨论】:
-
我想我已经把它缩小到 EditorFor() 没有生成一个 id 属性,所以 LabelFor() 没有什么可附加的。
标签: asp.net-mvc-3