0

我有这样的事情:

@Html.CheckBoxFor(model=>...)
<label>
@Html.DisplayFor(model=>...)
</label>
@Html.HiddenFor(model=>...)

但是浏览器中的最终结果是:1)元素 2)隐藏字段 3)标签

我需要解决这个问题,因为我使用的库需要标签紧跟在复选框之后。

4

1 回答 1

1

你为什么要包裹<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>
于 2013-09-19T22:00:21.813 回答