我有这样的事情:
@Html.CheckBoxFor(model=>...)
<label>
@Html.DisplayFor(model=>...)
</label>
@Html.HiddenFor(model=>...)
但是浏览器中的最终结果是:1)元素 2)隐藏字段 3)标签
我需要解决这个问题,因为我使用的库需要标签紧跟在复选框之后。
你为什么要包裹<label>
a DisplayFor
?只需使用@Html.LabelFor
.
此外。如果您使用@Html.CheckBox..
助手,他们将在复选框后呈现隐藏字段。这是有充分理由的,但需要一个冗长的例子。
您可能想要的是一个编辑器模板。这应该让你开始:
@model Boolean
<input type="checkbox"
id="@ViewData.TemplateInfo.GetFullHtmlFieldId("")"
name="@ViewData.TemplateInfo.GetFullHtmlFieldName("")" />
上面代码的文件名为“MyCheckbox”,位于Views/Shared/EditorTemplates
模型:
[UIHint("MyCheckbox")]
public bool MyProp { get; set; }
看法:
@Html.EditorFor(x=> x.MyProp)
@Html.LabelFor(x=> x.MyProp)
输出:
<input type="checkbox" id="MyProp" name="MyProp">
<label for="MyProp">MyProp</label>