C# DataAnnotations属性是否缓存?如果是,如何在不同的文化之间切换?

C# DataAnnotations属性是否缓存?如果是,如何在不同的文化之间切换?,c#,validation,attributes,data-annotations,custom-attributes,C#,Validation,Attributes,Data Annotations,Custom Attributes,我有一个网站,支持美国和加拿大。我的邮政编码验证使用我创建的自定义正则表达式属性来本地化我的正则表达式模式: public class RegularExpressionAttribute : System.ComponentModel.DataAnnotations.RegularExpressionAttribute { public RegularExpressionAttribute(Type patternResourceType, string patternResource

我有一个网站,支持美国和加拿大。我的邮政编码验证使用我创建的自定义正则表达式属性来本地化我的正则表达式模式:

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模式。因此,如果他们在美国加载,当他们切换到加拿大时,它会保持美国邮政编码模式,反之亦然

我怎样才能让它始终使用正确的文化


提前谢谢。

我找到了答案。创建自定义DataAnnotationsModelMetadataProvider。这真的很容易。您只需要重写一个方法。每次需要属性属性时都会调用该函数。网上有很多这样的例子,例如:和


干杯

嗨,你解决过这个问题吗?我也有同样的问题。看起来属性只有在应用程序启动时才会被加载一次。不,我最终用一个丑陋的解决方法解决了这个问题,包括在属性中硬编码一些东西。