我有一個從Web服務生成的部分類。我想補充ModelMetadata
這一類,像這樣:使用ModelMetadata獲取所有屬性
// Automatically generated code
public partial class MyClass
{
public string FIELD_ONE ...
public DateTime? FIELD_TWO ...
}
// My code
[MetadataType(typeof(MyMetaDataClass))]
public partial class MyClass
{
}
public class MyMetaDataClass
{
[Display(Name="Field One")]
public string FIELD_ONE;
[Display(Name="Field Two")]
public DateTime? FIELD_TWO;
}
現在我想獲得的MyClass
其中有元數據顯示屬性,即FIELD_ONE
和FIELD_TWO
的所有屬性。
我試過的東西
typeof(MyClass).GetProperties().Where(p => Attribute.IsDefined(typeof(DisplayAttribute))
但當然的屬性是不上MyClass
屬性。我也試過:
ModelMetadata mmd = ModelMetadata.FromLambdaExpression(m => pi.GetValue(m, null), Html.ViewData);
但我得到的錯誤「模板只能與現場訪問,訪問屬性,一維數組的索引,或單參數自定義索引表達式中使用。」
如果我能從MyClass
獲得MyMetadataClass
,那麼我可能會獲得該屬性的名稱並從MyClass
獲取同名的屬性。
這是可能的,還是我吠錯了樹?
檢查這這一點,我已經在這裏 http://stackoverflow.com/a/24757520/3050647 – elia07 2014-07-15 12:18:56