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

Rav*_*Ram 18 asp.net-mvc razor

我有以下代码

<div class="editor-label">
    @Html.LabelFor(model => model.subCategoryName)
</div>
Run Code Online (Sandbox Code Playgroud)

它将html呈现为

<div class="editor-label">
   <label for="subCategoryName">Sub-Category Name</label>
</div>
Run Code Online (Sandbox Code Playgroud)

如何在没有<label>但仍从ViewModel DataAnnotations获取值的情况下呈现干净的HTML,如:

    [Display(Name = "Sub-Category Name")]
    public string subCategoryName { get; set; }

<div class="editor-label">
   Sub-Category Name
</div
Run Code Online (Sandbox Code Playgroud)

我已经尝试了@ Html.XXXXXX(.DisplayTextFor,.DisplayNameFor等等)的所有方法 - 并且仍然无法使其工作.

Eri*_*ips 27

我认为在这种情况下正确的解决方案是不使用,LabelFor而是使用新的MVC 4方法DisplayNameFor.

 @Html.DisplayNameFor(model => model.subCategoryName)
Run Code Online (Sandbox Code Playgroud)

我注意到你说它不起作用,但那似乎很奇怪.这是ASP.Net上的一个示例- 为电影模型和表添加一个新字段,正是您要做的事情.


Rav*_*Ram 5

调查结果和修复:经过多次挖掘,我找到了解决方案.我的DataAnnotation格式不正确:

    [Required]
    [DisplayName("Sub-Category Name")]
    public string subCategoryName { get; set; } 
Run Code Online (Sandbox Code Playgroud)

    [Required]
    [Display(Name = "Sub-Category Name")]
    public string subCategoryName { get; set; } 
Run Code Online (Sandbox Code Playgroud)

2 - 我使用了以下RAZOR代码:

@Html.DisplayNameFor(model => model.subCategoryName)
Run Code Online (Sandbox Code Playgroud)

它现在正在工作!