我尝试将其用作视图的标题,但它返回一个空字符串。在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;
那么,我该如何使用这种方法返回一些内容呢?
答案 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中设置的显示名称属性。 *请注意登录文字上方的测试视图模型。
答案 1 :(得分:-3)
尝试
@ Html.DisplayNameFor(m =&gt; m.Name)