我如何使用DisplayNameForModel?

时间:2015-03-12 23:48:43

标签: c# asp.net-mvc razor asp.net-mvc-5

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

@model IEnumerable<MVCApp.Models.Model>
<h2>@Html.DisplayNameForModel()</h2>

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

属性&#39;显示&#39;对此声明类型无效。它仅适用于&#39;方法,属性,索引器,字段,参数&#39;声明。

文档DisplayNameExtensions.DisplayNameForModel Method简洁明了。语法调用参数,但是说:

方法&#39; DisplayNameForModel&#39;没有重载需要1个参数

正如“使用”部分所述&#34;当您使用实例方法语法调用此方法时,省略第一个参数&#34;

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

2 个答案:

答案 0 :(得分:5)

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

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

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

{
    public string TestProperty { get; set; }
}

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

<h2>@Html.DisplayNameForModel()</h2>

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

enter image description here

答案 1 :(得分:-3)

尝试

  

@ Html.DisplayNameFor(m =&gt; m.Name)