如何使用 DisplayNameForModel?

How do I use DisplayNameForModel?

我尝试将其用作视图的 header,但它 return 是一个空字符串。在 Razor 布局中,我有类似的内容:

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

我需要对模型定义本身进行设置吗?我尝试了数据注释 [Display(Name="Model Name")] 但它是构建错误:

属性 'Display' 在此声明类型上无效。它仅对 'method, property, indexer, field, param' 声明有效。

文档 DisplayNameExtensions.DisplayNameForModel Method 很简洁。语法要求参数,但表示:

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

如用法部分所述"When you use instance method syntax to call this method, omit the first parameter"

那么,我该如何使用这个方法来return一些东西呢?

尝试

@Html.DisplayNameFor(m => m.Name)

我刚刚在 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 中设置的显示名称属性。 *请注意测试视图模型 登录 文本上方的测试视图模型