我正在使用数据注释来验证电子邮件地址。
要在emailaddress无效时显示错误消息,我使用名为ErrorMessages的RESX文件。
我的代码是这样的:
public class EmailAdressAttribute : RegularExpressionAttribute
{
public EmailAdressAttribute()
: base(@"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,3}|[0-9]{1,4})(\]?)$")
{
ErrorMessage = ErrorMessages.ValidateEmailAdress;
}
当我在运行应用程序时更改我的asp.net mvc应用程序的语言(当前文化)时,仍会显示旧语言。
经过调试后,我发现该属性的构造函数只被调用一次(当我第一次使用它时)。
如何缓存属性? 如何从资源文件中显示正确的错误消息?
答案 0 :(得分:3)
如何在构造函数中设置ErrorMessage属性的值,而不是覆盖该属性并在需要时从资源中读取该文本呢?
public override string ErrorMessage
{
get { return ErrorMessages.ValidateEmailAdress; }
}
该属性不属于该类的实例,而是属于类型。这就是为什么它只在你的应用程序的生命周期中构建一次。