標準の MVC メンバーシップ認証のバリエーションを使用しています。
私のモデルが持っていると仮定すると:
[Required]
[Display(Name = "User name")]
public string UserName { get; set; }
そして、ビューには次のものがあります。
<div class="form-field">
@Html.EditorFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</div>
ユーザー名フィールドからタブを外すと、検証メッセージに「ユーザー名フィールドが必要です」と正しく表示されます。
私が必要としているのは、ユーザーが入力したユーザー名が送信の ActionResult で実行されるさらなる検証に失敗した場合、カスタム検証メッセージを表示したいということです。
たとえば、システムにすでにログインしているユーザー名をユーザーが入力した場合 (送信時にのみチェックされます)、ValidationMessage には「ユーザーはワークステーション xyz 経由で既にログインしています」のような内容が表示されるはずです。
Razor MVC 4 内で CustomValidationAttribute を使用する良い例が最適だと思います。それが機能する唯一の方法だと私は信じています。唯一のことは、これはクライアント側の検証用のようです。私の場合、サーバー側のみが必要です。