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和模板是什么以及如何使用它的文章