ASP.NET MVC 3中的模型元数据提供程序是否支持动态元数据?

时间:2012-06-21 19:50:06

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

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

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

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

另一个例子可能是数据库驱动的字段标签。通常可以使用Display属性的Name属性,但如果要根据数据库中的值动态设置显示名称,则无法使用此属性。

1 个答案:

答案 0 :(得分:3)

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

是的,每次请求都会调用CreateMetadata,因此您可以做一些奇特的事情,例如转到数据库并加载一些可能会及时更改的数据。

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