MVC 6 vNext显示名称属性不起作用

时间:2016-09-09 06:59:42

标签: asp.net asp.net-mvc asp.net-core-mvc

“显示名称”属性不起作用vNext。

CustomerEntryModel

public class CustomerEntryModel
{
    [DisplayName("First Name")]
    public String FirstName { get; set; }
}

CustomerEntry.cshtml

@addTagHelper "*, Microsoft.AspNet.Mvc.TagHelpers"
@model CustomerEntryModel

    <table>
        <tr>
            <td>
                <label asp-for="FirstName"></label>
            </td>
            <td>
                <input type="text" asp-for="FirstName"/>
            </td>
        </tr>
    </table>

呈现HTML

<table>
        <tbody>
        <tr>
            <td><label for="FirstName">FirstName</label></td>
            <td>
                <input type="text" name="FirstName" value="">
            </td>
        </tr>
        </tbody>
</table>

以下文章介绍了如何在标签上使用标记帮助程序来打印显示名称。但是,这会使用DisplayAttribute,这也适用于我。

http://www.davepaquette.com/archive/2015/05/18/mvc-6-label-tag-helper.aspx

但是,我想使用DisplayNameAttribute。原因是,我想扩展属性的行为,并从数据库中检索显示名称。我无法延长DisplayAttribute,因为它是密封的。

怎么做?

1 个答案:

答案 0 :(得分:1)

我有同样的问题。我使用的是Asp.NET核心版本1.0.0(使用.net框架4.6.1作为依赖项)并且DisplayName不起作用(它呈现的是属性名称而不是DisplayName值)。我将我的MVC软件包升级到1.1.0-preview1-final,它已经解决了。

在我看来,有一个错误,他们正在修复它在下一个版本中。我将继续使用预览进行开发,因为我也使用DisplayName来扩展DisplayAttribute。