2011-09-05 63 views

回答

15

內置屬性(如[Required])在元數據上分配了不同的屬性(請參閱我在答案末尾鏈接的博客文章以瞭解更多信息)。例如:

public class MyViewModel 
{ 
    [Required] 
    public string Foo { get; set; } 
} 

將會分配:

@{ 
    var isRequired = ViewData.ModelMetadata.IsRequired; 
} 

在相應的編輯/顯示模板。

如果你有一個自定義屬性:

public class MyCustomStuffAttribute : Attribute, IMetadataAware 
{ 
    public void OnMetadataCreated(ModelMetadata metadata) 
    { 
     metadata.AdditionalValues["customStuff"] = "some very custom stuff"; 
    } 
} 

,並飾有它視圖模型:在相應的編輯/顯示模板

public class MyViewModel 
{ 
    [MyCustomStuff] 
    public string Foo { get; set; } 
} 

,你可以獲取此:

@{ 
    var myCustomStuff = ViewData.ModelMetadata.AdditionalValues["customStuff"]; 
} 

而且你絕對應該閱讀Brad Wilson的series of blog posts約WH在ModelMetadata和ASP.NET MVC中的模板是以及如何使用它。