2

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

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

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

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

4

1 回答 1

3

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

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

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

于 2012-06-27T22:45:05.073 回答