为了让我们动态控制标签和错误消息,我们创建了一个自定义DataAnnotationsModelMetadataProvider
。在Display
属性中,我们将密钥存储在Name
属性中,并使用自定义DataAnnotationsModelMetadataProvider
我们将密钥替换为自定义CMS中的字符串值。问题是我们现在有两组值。一个用于Web视图,一个用于移动视图。在运行时,我们检查客户端是否在移动设备上并相应地替换值。
在测试运行此设置后,我遇到了一个奇怪的问题。首次创建AppDomain
并使用字符串值替换不同数据注释的Name
属性时,一切正常。在调试中,当我第二次输入自定义DataAnnotationsModelMetadataProvider
时,我看到名称属性已填充了我替换上一次运行的值。这对我来说很奇怪,因为我的理解是数据注释属性无法在运行时进行。现在好像有某个模型元数据缓存发生了。由于我每次调用DataAnnotationsModelMetadataProvider
时都会根据我的自定义解决方案替换值,因此如果可能的话,我想禁用此缓存。
现在我开始使用ShortName
属性作为我的密钥存储属性,我替换了Name
属性,这样我就可以在每次运行时重新填充字符串。但这不是最初的设计,我没有ValidationAttributes
这样的密钥库属性。
有没有办法禁用此缓存?我不需要缓存来缓存,因为无论如何所有CMS数据都缓存在另一层的内存中。