获取DisplayName属性的所有值

Cyr*_*Cyr 1 c# asp.net-mvc data-annotations entity-framework-6

我正在使用带有EntityFramework 6 DataAnnotations的asp.net MVC 5。我想知道是否有一种方法来获取所有DisplayName对象并将它们保存在变量中到Controller类中。

例如,考虑以下类:

public class Class1
{
    [DisplayName("The ID number")]
    public int Id { get; set; }

    [DisplayName("My Value")]
    public int Value { get; set; }

    [DisplayName("Label name to display")]
    public string Label { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何获取DisplayName所有属性的值?例如,如何创建一个返回a的函数,该函数Dictionary< string,string >的键具有属性名称和值为的键DisplayName,如下所示:

{ "Id": "The ID name", "Value": "My Value", "Label": "Label name to display"}.
Run Code Online (Sandbox Code Playgroud)

我已经看到了这个主题stackoverflow-获取DisplayName属性的值,但是我不知道扩展此代码的方法。

Iva*_*oev 5

如果您不是很在意DisplayName属性,而是在使用有效的显示名称(例如通过数据绑定),那么最简单的方法是使用TypeDescriptor.GetProperties方法:

var info = TypeDescriptor.GetProperties(typeof(Class1))
    .Cast<PropertyDescriptor>()
    .ToDictionary(p => p.Name, p => p.DisplayName);
Run Code Online (Sandbox Code Playgroud)