IEnumerable ViewModel的Razor Html.DisplayNameForInnerType

时间:2017-05-25 11:44:58

标签: c# asp.net-mvc razor asp.net-core annotations

我的视图绑定到IEnumerable<MyViewModel>

MyViewModel类使用如下的DisplayName进行注释:

 [DisplayName("My other Display Name")]
    public class MyViewModel
    {
     ...
    }

在我直接绑定到“MyViewModel”的视图中,我使用Html.DisplayNameForModel()并且它可以正常工作。

对于IEnumerable的情况......我认为可以使用Html.DisplayNameForInnerType...但不幸的是我无法帮助自己找到这里所需的表达式。

任何人都可以提供有关如何使用Html.DisplayNameForInnerType的示例吗?

UPDATE1: 回答评论中的问题:它是关于ASP.Net Core 1.1 Html.DisplayNameForInnerType<>

但是,我无法在MS文档中找到它。

3 个答案:

答案 0 :(得分:0)

有一种方法可以编写自定义的Html帮助程序,但最简单的方法是使用模型中的临时参数:

    [DisplayName("My other Display Name")]
    public class MyViewModel
    {
        [DisplayName("My other Display Name")]
        public string DisplayNameProp { get; set; }
        public string Name { get; set; }
    }

观看:

@model IEnumerable<MyViewModel>

<table>
    @foreach (var item in Model)
    {
        <tr>
            <td>@Html.DisplayNameFor(x => x.DisplayNameProp)</td>
            <td>@item.Name</td>
        </tr>

    }
</table>

答案 1 :(得分:0)

假设您具有以下模型:

public class MyViewModel
{
    [Display(Name = "My Id")]
    public int Id { get; set; }
    [Display(Name = "My name")]
    public string Name { get; set; }
}

在您看来,您可以像这样使用Html.DisplayNameForInnerType:

@model IEnumerable<MyViewModel>
<table>
    <thead>
        <tr>
            <th>@Html.DisplayNameForInnerType((MyViewModel item) => item.Id)</th>
            <th>@Html.DisplayNameForInnerType((MyViewModel item) => item.Name)</th>
        </tr>
    </thead>
    <tbody>
    @foreach (var item in Model)
    {
        <tr>
            <td>@item.Id</td>
            <td>@item.Name</td>
        </tr>
    }
    </tbody>
</table>

答案 2 :(得分:0)

尝试此操作以获取类DisplayName

void draw(){
    displayPuzzle();
}