如果电子邮件地址格式错误,我无法本地化错误消息。
我不断收到英文消息:“请输入有效的电子邮件地址”
这是我的模特:
[Required(ErrorMessage = "Ihre Email-Adresse fehlt!")]
[Display(Name = "Ihre Email Adresse")]
[DataType(DataType.EmailAddress, ErrorMessage = "Ungültige Email-Adresse")]
[RegularExpression(@"[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}", ErrorMessage = "Ungültige Email-Adresse")]
public string From { get; set; }
如果输入了NO地址,则显示德语消息,但如果输入了无效地址,则会显示英语消息。
正如您所看到的,我尝试了两种方法 - DataType和RegularExpression-Annotation中的ErrorMessage。
如果地址无效,我该如何呈现本地化的ErrorMessage?
答案 0 :(得分:16)
使用DataTypeAttribute时,MVC不会对电子邮件地址进行任何验证,因此您看到的任何错误消息都来自正则表达式或来自其他地方的代码。
由于您有正则表达式失败的错误消息,因此它必须来自其他内容。您是否使用任何类型的第三方验证工具来处理电子邮件地址?由于您使用的是DataType属性,是否有自定义的DisplayTemplate?
如果您使用的是.net 4.5(VS 2012),我建议您使用EmailAddressAttribute:
[EmailAddress(ErrorMessage = "...")]
使用此方法,您将删除DataType(EmailAddress包括DataType属性,因为它是从DataTypeAttribute派生的)和Regex。
答案 1 :(得分:1)
Mystere Man有正确答案:
我使用的是jquery-validate,所以我必须包含_de
的本地化文件<script type="text/javascript" src="jquery.validate.js"></script>
<script type="text/javascript" src="localization/messages_de.js"></script>
可以在https://github.com/jzaefferer/jquery-validation/tree/master/localization
找到