我有以下代码
<div class="editor-label">
@Html.LabelFor(model => model.subCategoryName)
</div>
将html呈现为
<div class="editor-label">
<label for="subCategoryName">Sub-Category Name</label>
</div>
如何在没有<label>
的情况下呈现干净的HTML,但仍然从ViewModel DataAnnotations获取值,如:
[Display(Name = "Sub-Category Name")]
public string subCategoryName { get; set; }
<div class="editor-label">
Sub-Category Name
</div
我已经尝试了@ Html.XXXXXX(.DisplayTextFor,.DisplayNameFor等等)的所有方法 - 并且仍然无法使其工作。
答案 0 :(得分:27)
我认为在这种情况下正确的解决方案是不使用LabelFor
,而是使用新的MVC 4方法DisplayNameFor。
@Html.DisplayNameFor(model => model.subCategoryName)
我注意到你说它没用,但那似乎很奇怪。以下是ASP.Net - Adding a New Field to the Movie Model and Table上的示例,其中包含您正在尝试的内容。
答案 1 :(得分:5)
调查结果和修复: 经过多次挖掘,我找到了解决方案。 我的DataAnnotation格式不正确:
[Required]
[DisplayName("Sub-Category Name")]
public string subCategoryName { get; set; }
不
[Required]
[Display(Name = "Sub-Category Name")]
public string subCategoryName { get; set; }
2 - 我使用了以下RAZOR代码:
@Html.DisplayNameFor(model => model.subCategoryName)
现在正在工作!
答案 2 :(得分:2)
[Mostly use in Display Name]
@Html.DisplayNameFor(model => model.UserName)
[Used for Label, Functionality of Label click on it then cursor point to related control]
@Html.LabelFor(m => m.UserName)
[Used for Textbox]
@Html.TextBoxFor(m => m.UserName)
[Used for Validation Message]
@Html.ValidationMessageFor(m => m.UserName)