我尝试将其用作视图的标题,但它返回一个空字符串.在Razor布局中,我有类似的东西:
@model IEnumerable<MVCApp.Models.Model>
<h2>@Html.DisplayNameForModel()</h2>
我是否需要在模型定义本身上设置一些东西?我尝试了一个数据注释[Display(Name =“Model Name”)]但它是一个构建错误:
属性“显示”在此声明类型上无效.它仅对’method,property,indexer,field,param’声明有效.
文档DisplayNameExtensions.DisplayNameForModel Method很简洁.语法调用参数,但是说:
方法’DisplayNameForModel’没有重载需要1个参数
正如用法部分所说“当您使用实例方法语法来调用此方法时,省略第一个参数”
那么,我该如何使用这种方法返回一些东西呢?
最佳答案 我刚刚在VS2013中使用了默认的MVC 5模板项目,并且@ Html.DisplayNameForModel()没有问题.
首先,您在视图模型上使用了错误的数据注释.您想使用[DisplayName(“我的模型名称”)]而不是[Display()]
[DisplayName("Test View Model")]
public class TestViewModel
{
public string TestProperty { get; set; }
}
其次,您在MSDN上看到的html参数是MVC中任何Html帮助程序的必需参数.您不必为此值传递任何内容,视图引擎会为您执行此操作.因此,在您的视图中,您将使用以下内容来获取您在模型上设置的显示名称.
<h2>@Html.DisplayNameForModel()</h2>
现在,您的结果应输出您在html中设置的显示名称属性. *请注意登录文本上方的测试视图模型.