从Class DataAnnotation渲染LabelFor而不使用Label标记

时间:2012-08-30 18:52:57

标签: asp.net-mvc razor

我有以下代码

<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等等)的所有方法 - 并且仍然无法使其工作。

3 个答案:

答案 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)