我想添加一个 [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";
}
}
和一个用它装饰的 View 模型:
public class MyViewModel
{
[MyCustomStuff]
public string Foo { get; set; }
}
在相应的编辑器/显示模板中,您可以获取:
@{
var myCustomStuff = ViewData.ModelMetadata.AdditionalValues["customStuff"];
}
此外,您绝对应该阅读 Brad Wilson 的 series of blog posts关于 ASP.NET MVC 中的 ModelMetadata 和模板是什么以及如何使用它。
关于asp.net-mvc-3 - 编辑器模板/显示模板如何识别分配给它们的任何属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7313284/