asp.net-mvc-3 - 编辑器模板/显示模板如何识别分配给它们的任何属性?

标签 asp.net-mvc-3

我想添加一个 [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/

相关文章:

asp.net-mvc-3 - ASP.NET MVC 3 和 App_Code 文件夹

asp.net-mvc-3 - .NET MVC 3 输出缓存 Html.Action()

asp.net-mvc - MVC 3 Razor View 中的级联下拉菜单

c# - Ninject 的 .NET MVC3 服务定位器/依赖解析器问题

entity-framework - MVC 3 EF 4.1 dbContext - 删除具有不可为空的外键关系的一对多数据对象

asp.net-mvc-3 - System.Web.Mvc.HandleErrorInfo 模型类型错误

c# - 数据注释如何工作?

c# - 为 ViewModel 选择什么方法?

asp.net-mvc-3 - Azure 和 MVC 中的成员角色

asp.net-mvc - 如何在 ASP.NET MVC 3 应用程序中处理未捕获的异常?