我有一个同时支持美国和加拿大的网站。我的邮政编码验证使用我创建的自定义 RegEx 属性来允许我的 RegEx 模式本地化:
public class RegularExpressionAttribute : System.ComponentModel.DataAnnotations.RegularExpressionAttribute
{
public RegularExpressionAttribute(Type patternResourceType, string patternResourceName)
: this(ResourceHelper.GetString(patternResourceType, patternResourceName))
{
this.PatternResourceName = patternResourceName;
this.PatternResourceType = patternResourceType;
}
}
问题是,如果客户端从一个国家切换到另一个国家,它会保留第一个国家的 RegEx 模式。因此,如果他们在美国加载它,当他们切换到加拿大时它会保留美国的 zip 模式,反之亦然。
我怎样才能让它始终使用正确的文化?
提前致谢。
最佳答案
我找到了答案。创建自定义 DataAnnotationsModelMetadataProvider。这真的很容易。您只需要重写一个方法。每次需要 property 属性时都会调用它。网上有很多这样的示例,例如:http://bradwilson.typepad.com/blog/2010/01/why-you-dont-need-modelmetadataattributes.html和 http://www.freewebdevelopersite.com/2011/07/10/custom-metadata-providers-in-asp-net-mvc/ .
干杯
关于c# - DataAnnotations 属性是否已缓存?如果是这样,如何在不同文化之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5938259/