再現する手順:
ErrorMessage
プロパティのRegisterViewModel
で指定されたConfirmPassword
を見てください。 「パスワードと確認パスワードが一致しません。」です。ErrorMessage
属性のカスタムCompare
プロパティが機能していないようです。 ErrorMessageを指定しても、検証では代わりにある種のデフォルトメッセージが表示されます。
これはSystem.Web.Mvc.CompareAttribute
で機能しますが、現在は非推奨であり、代わりにSystem.ComponentModel.DataAnnotations.CompareAttribute
を使用する必要があります。これは、この問題を示しています。
プロパティにCompare
属性を追加し、次のようにErrorMessage
を指定します。
[Compare("NewPassword", ErrorMessage = "The new password and confirmation password do not match. I'll even add some random text!")]
public string ConfirmPassword { get; set; }
期待される結果は次のようになります(しかしこれは私が得るものではありません):
代わりに、次の「デフォルト」エラーメッセージが表示されます。
クライアント側の検証は無効になっています。私は何かが足りないのですか?この例は、認証として個々のユーザーアカウントを使用するMVC5テンプレートから抜粋したものです。
これはバグだと思います。 (編集:そうです。)これも再現できます。実際、動作はクライアント側の検証をオンにしてもまったく同じです。生成されたHTMLを見ると、カスタムエラー文字列も生成されていないことがわかります。常にデフォルトのエラー文字列が出力されます。
実際、私は詳細情報を探すために検索したところ、codeplexのバグとして送信されたことがわかりました。それは8日前に報告され、誰かがそれに割り当てられました。バグレポートを見つけることができます ここ 。
私は同じ問題、解決策を持っています:
変化する:
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
に:
[System.Web.Mvc.Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
動作しています!
これは 古いバグ 2013年のものです。次のコマンドを試して、すべての プロジェクトの依存関係 を更新してください。
PM> update-package