获取与某个属性关联的显示名称属性

时间:2015-09-17 09:23:45

标签: .net asp.net-mvc asp.net-mvc-4 razor html-helper

我认为这是一个非常简单的问题,但我无法找到任何解决方案,或者我认为我不知道如何搜索这些内容,所以如果之前已经提出这个问题请指点我这样的重复

假设我有这样一个类:

    public class Company
    {
        public int ID { get; set; }
        public Nullable<int> ApplicationID { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessageResourceType = typeof(MyResource),
                ErrorMessageResourceName = "RequiredCompanyName")]
        [Display(Name = "CompanyName", ResourceType = typeof(MyResource))]
        public string EntityName { get; set; }

        public Nullable<int> EntityID { get; set; }
    }

我想在剃刀视图中获取与Property EntityName关联的属性的名称。我知道使用DisplayFor html帮助器获取资源字符串值非常容易,但我需要在这里获取与属性关联的属性值的名称,在本例中为字符串&#34 ;公司名称&#34 ;. 这可行吗?

1 个答案:

答案 0 :(得分:0)

如果你想在剃刀中使用Display属性的值,你也可以使用LabelFor帮助器。但是如果你的要求不是使用这些帮助器,你可以获得类似下面的值,然后存储在ViewBag中,或者将它作为模型的一部分并在剃刀中使用它。

您可以像这样获取属性值 -

        var objCompany = new Company();//Or any other way to get the instance of object.

        var displayAttribute = objCompany .GetType()
         .GetMember("EntityName").First()
         .GetCustomAttributes(typeof(DisplayAttribute), true)
         .GetValue(0);

        var displayAttributeValue = ((DisplayAttribute)(displayAttribute)).Name;

displayAttributeValue变量将包含Name属性的Display值,即 CompanyName