7
我想一個[Required]
屬性添加到我DateTime
編輯模板,這樣我就可以添加相應的驗證方案或DataType.Date
屬性,所以我知道什麼時候我應該只顯示日期。但我無法弄清楚如何獲取元數據,這些元數據說明了編輯器模板分配給它的屬性。編輯器模板/顯示模板如何識別分配給它們的任何屬性?
我想一個[Required]
屬性添加到我DateTime
編輯模板,這樣我就可以添加相應的驗證方案或DataType.Date
屬性,所以我知道什麼時候我應該只顯示日期。但我無法弄清楚如何獲取元數據,這些元數據說明了編輯器模板分配給它的屬性。編輯器模板/顯示模板如何識別分配給它們的任何屬性?
內置屬性(如[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中的模板是以及如何使用它。