2

如果电子邮件地址格式错误,我无法本地化错误消息。

我不断收到英文消息:“请输入有效的电子邮件地址”

这是我的模型:

    [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; }

如果没有输入地址,则会出现德语消息,但如果输入了无效地址,则会出现英文消息。

如您所见,我在 DataType 和 RegularExpression-Annotation 中都尝试了 ErrorMessage。

地址无效时如何显示本地化的错误消息?

4

2 回答 2

17

在使用 DataTypeAttribute 时,MVC 不会对电子邮件地址进行任何验证,因此您看到的任何错误消息都来自正则表达式,或者来自其他地方的代码。

由于您有一条正则表达式失败的错误消息,那么它一定来自其他东西。您是否对电子邮件地址使用任何类型的第三方验证工具?由于您使用的是 DataType 属性,是否有自定义 DisplayTemplate?

如果您使用的是 .net 4.5 (VS 2012),我建议您改用 EmailAddressAttribute:

[EmailAddress(ErrorMessage = "...")]

这样,您将删除 DataType(EmailAddress 包括 DataType 功能,因为它是从 DataTypeAttribute 派生的)和 Regex。

于 2013-05-17T00:41:34.503 回答
1

神秘人给出了正确答案:

我使用的是 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找到

于 2013-05-17T08:11:16.677 回答