2015-09-27 18 views
6

我正在開發MVC 5應用程序。我想在我的控制器方法中獲取[Display(Name =「」)]屬性中的值,以查看任何類的任何屬性。如何在控制器中的[Display(Name =「」)]屬性中使用EF6獲取任何屬性的值

我的模型爲:

public partial class ABC 
{ 
    [Required] 
    [Display(Name = "Transaction No")] 
    public string S1 { get; set; } 
} 

我看過answer to this question,但它是一個漫長的小程序。我正在尋找一些隨時可用和內置的東西。

所以,我已經試過這樣:

MemberInfo property = typeof(ABC).GetProperty(s); // s is a string type which has the property name ... in this case it is S1 
var dd = property.CustomAttributes.Select(x => x.NamedArguments.Select(y => y.TypedValue.Value)).OfType<System.ComponentModel.DataAnnotations.DisplayAttribute>(); 

但我有2個問題,一是我沒有得到的值,即「交易沒有」。其次,即使我提到.OfType <>我仍然獲得所有屬性,即[顯示(名稱=「」)]和[必需]。

但幸運的是我得到了 「交易沒有」 價值

財產>> CustomAttribute >> [1] >> NamedArguments >> [0] >> >>的TypedValue價值 =「無交易「

由於TypedValue.Value具有所需的價值,所以我怎麼能找回?

回答

11

這應該工作:

MemberInfo property = typeof(ABC).GetProperty(s); 
var dd = property.GetCustomAttribute(typeof(DisplayAttribute)) as DisplayAttribute; 
if(dd != null) 
{ 
    var name = dd.Name; 
} 
+0

謝謝..它爲我工作.. ** typeof(ABC)** //或需要屬性的模型 –

+0

我試過了,但值不傳遞給屬性。我嘗試用我的模型的值替換s。但是,當我懸停在memberinfo屬性....屬性爲空。爲什麼是這樣?我不知道是否因爲我的模型值是枚舉?我該如何解決它?這是我的行:typeof(MyProject.Dom.Title).GetProperty(Card.Title.ToString()) – Nurul

+1

@Nurul,評論是不是一個地方提問像「這是我的代碼,爲什麼它不工作」 。請將其作爲單獨的問題發佈,幷包含您的代碼。 –

0

亞歷克斯藝術的回答幾乎是爲我工作。 dd.Name只是返回屬性名稱,但dd.GetName()返回Display屬性的文本。

+0

您是否嘗試過C#6的nameof()運算符? –

+0

@KunalMukherjee剛剛試過,它也返回屬性名稱,而不是來自'Display'屬性的文本。 –

相關問題