自定义模型元数据提供程序缓存问题

时间:2014-08-24 16:21:15

标签: caching data-annotations asp.net-mvc-5.1 modelmetadataprovider

为了让我们动态控制标签和错误消息,我们创建了一个自定义DataAnnotationsModelMetadataProvider。在Display属性中,我们将密钥存储在Name属性中,并使用自定义DataAnnotationsModelMetadataProvider我们将密钥替换为自定义CMS中的字符串值。问题是我们现在有两组值。一个用于Web视图,一个用于移动视图。在运行时,我们检查客户端是否在移动设备上并相应地替换值。

在测试运行此设置后,我遇到了一个奇怪的问题。首次创建AppDomain并使用字符串值替换不同数据注释的Name属性时,一切正常。在调试中,当我第二次输入自定义DataAnnotationsModelMetadataProvider时,我看到名称属性已填充了我替换上一次运行的值。这对我来说很奇怪,因为我的理解是数据注释属性无法在运行时进行。现在好像有某个模型元数据缓存发生了。由于我每次调用DataAnnotationsModelMetadataProvider时都会根据我的自定义解决方案替换值,因此如果可能的话,我想禁用此缓存。

现在我开始使用ShortName属性作为我的密钥存储属性,我替换了Name属性,这样我就可以在每次运行时重新填充字符串。但这不是最初的设计,我没有ValidationAttributes这样的密钥库属性。

有没有办法禁用此缓存?我不需要缓存来缓存,因为无论如何所有CMS数据都缓存在另一层的内存中。

0 个答案:

没有答案