Asp.net mvc 3 编辑器模板/显示模板如何识别分配给它们的任何属性?
我想在我的Asp.net mvc 3 编辑器模板/显示模板如何识别分配给它们的任何属性?,asp.net-mvc-3,Asp.net Mvc 3,我想在我的DateTime编辑器模板中添加一个[必需]属性,这样我就可以添加适当的验证方案或数据类型.Date属性,这样我就知道什么时候应该只显示日期。但是我不知道如何获取元数据,该元数据说明编辑器模板已分配给它的属性。内置属性,例如[必需]在元数据上分配不同的属性(请参阅我在回答末尾链接的博客文章以了解更多信息)。例如: public class MyViewModel { [Required] public string Foo { get; set; } } 将分配: @
DateTime
编辑器模板中添加一个[必需]
属性,这样我就可以添加适当的验证方案或数据类型.Date
属性,这样我就知道什么时候应该只显示日期。但是我不知道如何获取元数据,该元数据说明编辑器模板已分配给它的属性。内置属性,例如[必需]
在元数据上分配不同的属性(请参阅我在回答末尾链接的博客文章以了解更多信息)。例如:
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关于ASP.NET MVC中的ModelMetadata和模板是什么以及如何使用它的文章