0

メールの検証に Compare、Required、および Regex 属性を使用する登録フォームがある MVC アプリに取り組んでいます。ユーザーは電子メール アドレスを入力してから、電子メール アドレスを確認する必要があります。Compare 属性を使用して、同じものを入力したことを確認します。これは私のモデルです。

[RegularExpression(@"<REGEX IS HERE>", ErrorMessage = "Please enter a valid e-mail address")]
[Required]
[DataType(DataType.EmailAddress)]
[Display(Name = "Email")]
public string EmailAddress { get; set; }

[Compare("EmailAddress", ErrorMessage = "The email and confirmation email do not match.")]
[RegularExpression(@"<REGEX IS HERE>", ErrorMessage = "Please enter a valid e-mail address")]        
[Required]        
[DataType(DataType.EmailAddress)]        
[Display(Name = "Confirm Email")]        
public string ConfirmEmailAddress { get; set; }

他のすべての検証、つまり必須/正規表現は正常に機能しますが、比較のクライアント側では機能しません。フォームが戻ってきてエラーを投稿したときに機能します。

jquery.validate.unobtrusive と jquery1.5.1 にバグがあるという多くの記事を読みましたが、何をしても問題は解決しません。

私はここで髪を引っ張っています。

4

2 に答える 2

0

他の属性が干渉している可能性があります。本当に必要なのは、比較属性と表示属性だけです。必須、正規表現、データ型はすべて不要です。これは、プライマリにこれらのフィールドが既に存在するためです。プライマリと一致しない場合、比較は失敗します。

もう1つのアイデアは、MvcContribパッケージをダウンロードし、正規表現を使用するのではなく、電子メールの検証を自動的に行う電子メール属性を使用することです。

于 2012-07-10T16:14:36.260 に答える
0

とにかく手の込んだ検証を行う場合は、NuGet からMVC Foolproof Validationを取得することを検討してください。それには独自の「EqualTo」属性があり、もっとうまくいくかもしれません。

(ちなみに、おそらく確認アドレスを正規表現でチェックする必要はありません。)

于 2012-07-10T16:01:08.550 に答える