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 の ErrorMessage と RegularExpression-Annotation の両方を試しました。

アドレスが無効な場合、ローカライズされた ErrorMessage を表示するにはどうすればよいですか?

4

2 に答える 2

17

DataTypeAttribute を使用する場合、MVC は電子メール アドレスの検証を行いません。したがって、表示されるエラー メッセージは、正規表現によるものか、別の場所のコードによるものです。

正規表現の失敗に関するエラー メッセージがあるので、それは別のものから来ているに違いありません。メールアドレスにサードパーティの検証ツールを使用していますか? DataType 属性を使用しているので、カスタム DisplayTemplate はありますか?

.net 4.5 (VS 2012) を使用している場合は、代わりに EmailAddressAttribute を使用することをお勧めします。

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

これにより、DataType (DataTypeAttribute から派生したため、EmailAddress には DataType 機能が含まれます) と Regex を削除します。

于 2013-05-17T00:41:34.503 に答える