ASP.NET MVC Core:如何通过索引访问模型的属性?

时间:2018-01-30 22:14:29

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

假设我的模型中有以下类:

public class Person
{
    public long ID { get; set; }

    [Display(Name = "First Name")]
    public string FirstName { get; set; }

    [Display(Name = "Surname")]
    public string Surname{ get; set; }
}

我想在我的View中创建一个表,其中标题'First Name'和'Surname'是使用以下内容自动创建的:

<table>
    <thead>
        <tr>
            <!-- 1a (fake code) -->
            <th>@Html.DisplayNameFor(n => n.getProperty(1))</th> 

            <!-- 1b (fake code) -->
            <th>@Html.DisplayNameFor(n => n.getProperty(2))</th>

            <!-- 2a -->
            <th>@Html.DisplayNameFor(n => n.FirstName)</th> 

            <!-- 2b -->
            <th>@Html.DisplayNameFor(n => n.Surname)</th>
        </tr>
    </thead>
</table>

其中1a和2a应该在功能上相同。与2a和2b相同。

有没有办法完成这项工作?

1 个答案:

答案 0 :(得分:0)

您可以创建自定义属性(例如IndexAttribute),然后用它来装饰Person属性:

public class Person
{
    [Index (Value = 0)]
    public long ID {get; set; }

    [Index (Value = 1)]
    [Display (Name = "First Name")]
    public string FirstName {get; set; }

    [Index (Value = 2)]
    [Display (Name = "Surname")]
    public string Surname {get; set; }
}

然后创建一个HtmlHelper,通过反射做n.GetProperty(n);