ASP.NET MVC 4
の最新バージョンを使用していFluent Validation
ます。データ注釈に対して Fluent Validation を使用しています。
データが入力されるビューに検証エラーの概要を追加しようとしています。現在ValidationMessageFor
、各入力フィールドで を使用しています。フォームの検証が true になった後、他の検証 (サービスに対するものなど) を実行し、検証が失敗した場合にこれらのメッセージをビューに表示する必要がある場合があります。また、この検証は入力フィールドに関連していないため、このエラーを検証エラーの概要に表示したいと考えています。
たとえば、私の従業員番号フィールドを見てみましょう。これは必須であり、10 文字を超えることはできません。Fluent Validation を使用した次のバリデータ クラスがあります。
public class CreateEmployeeViewModelValidator : AbstractValidator<CreateEmployeeViewModel>
{
public CreateEmployeeViewModelValidator()
{
RuleFor(x => x.EmployeeNumber)
.NotEmpty()
.WithMessage("Required")
.Length(1, 10)
.WithMessage("Must not be greater than 10 characters");
}
}
私のHTMLマークアップ:
@Html.TextBoxFor(x => x.EmployeeNumber)
@Html.ValidationMessageFor(x => x.EmployeeNumber)
この部分は正常に動作します。テキスト ボックスが空の場合、テキスト ボックスの横に「必須」エラー メッセージが表示されます。10 文字を超える場合は、「10 文字を超えることはできません」というエラー メッセージが表示されます。
次に、検証エラーの概要をビューに追加します。以下を追加しました。
@Html.ValidationSummary(true, "Errors have occurred while. Fix the errors before saving.")
上記のコントロールに関連するまともなエラーメッセージを表示したいと思います。空欄だと社員番号横に「必須」と表示されますが、バリデーションエラーサマリに「社員番号必須」のように表示してほしいです。現在、「エラーが発生しました。保存する前にエラーを修正してください。」というテキストが表示されるだけです。
また、従業員が有効な従業員であるかどうかを確認するなど、フォームの検証が true の後に他の検証を行う必要がある場合は、このエラー メッセージも表示する必要があります。コントローラーのアクションメソッドにこれがある場合:
ModelState.AddModelError("", "My test error message");
検証エラーの概要に「My test error message」が表示されるようにしたいと考えています。
どうすればこのようなことが可能になるでしょうか?