在元素后移动@ Html.Labelfor

时间:2013-09-19 21:52:06

标签: asp.net razor

我有这样的事情:

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

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

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

1 个答案:

答案 0 :(得分:1)

为什么要围绕<label>包裹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>