我如何使用DisplayNameForModel?

Sho*_*Sha 4 c# asp.net-mvc razor asp.net-mvc-5

我尝试将其用作视图的标题,但它返回一个空字符串.在Razor布局中,我有类似的东西:

@model IEnumerable<MVCApp.Models.Model>
<h2>@Html.DisplayNameForModel()</h2>
Run Code Online (Sandbox Code Playgroud)

我是否需要在模型定义本身上设置一些东西?我尝试了一个数据注释,[Display(Name="Model Name")]但它是一个构建错误:

属性"显示"在此声明类型上无效.它仅对'method,property,indexer,field,param'声明有效.

文档DisplayNameExtensions.DisplayNameForModel方法简洁.语法调用参数,但是说:

方法'DisplayNameForModel'没有重载需要1个参数

正如用法部分所说"当您使用实例方法语法来调用此方法时,省略第一个参数"

那么,我该如何使用这种方法返回一些东西呢?

Tom*_*mmy 5

我刚刚在VS2013中使用了默认的MVC 5模板项目,并且@Html.DisplayNameForModel()没有任何问题.

首先,您在视图模型上使用了错误的数据注释.你想要使用[DisplayName("My Model Name")]而不是[Display()]

[DisplayName("Test View Model")]
public class TestViewModel

{
    public string TestProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

其次,您在MSDN上看到的html参数是MVC中任何Html帮助程序的必需参数.您不必为此值传递任何内容,视图引擎会为您执行此操作.因此,在您的视图中,您将使用以下内容来获取您在模型上设置的显示名称.

<h2>@Html.DisplayNameForModel()</h2>
Run Code Online (Sandbox Code Playgroud)

现在,您的结果应输出您在html中设置的显示名称属性.*请注意登录文本上方的测试视图模型.

在此输入图像描述