【问题标题】:Do model metadata providers in ASP.NET MVC 3 support dynamic metadata?ASP.NET MVC 3 中的模型元数据提供程序是否支持动态元数据?
【发布时间】:2012-06-28 06:45:05
【问题描述】:

我正在尝试在 ASP.NET MVC 3 中实现一些自定义模型元数据。我不能使用数据注释属性,因为某些元数据可能会根据配置的值而改变,所以我需要一个可以让我设置的解决方案每个请求的元数据。我一直在阅读有关自定义模型元数据提供程序的信息,但找不到任何有关支持动态元数据方案的信息。

MVC 框架是否缓存来自模型元数据提供程序的元数据,还是会在每次请求时调用 CreateMetadata 方法?自定义模型元数据提供程序是动态元数据的一个很好的解决方案,还是应该将它放在视图模型中?

编辑:这不一定是我所说的验证元数据,所以我不是在寻找特定于验证的解决方案。它可能只是要被视图显示或使用的元数据(例如在 HTML 5 数据属性中)。

另一个例子可能是数据库驱动的字段标签。通常会使用 Display 属性的 Name 属性,但如果您想根据数据库中的值动态设置显示名称,这将不起作用。

【问题讨论】:

标签: asp.net-mvc asp.net-mvc-3 modelmetadata modelmetadataprovider


【解决方案1】:

您可以从 DataAnnotationsModelMetadataProvider 派生您的自定义提供程序,因此您将继承所有基本行为。

是的,每个请求都会调用CreateMetadata,所以你可以做一些花哨的事情,比如去数据库并加载一些可能会及时改变的数据。

对于标签,我将实现使用 Db 作为标签源的自定义 ResourceProvider(基于当前文化/帐户等)示例在这里:http://www.codeproject.com/Articles/14190/ASP-NET-2-0-Custom-SQL-Server-ResourceProvider

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-10
    • 2011-09-24
    • 2010-09-07
    • 1970-01-01
    • 2014-02-14
    • 2011-11-28
    相关资源
    最近更新 更多