1

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」が表示されるようにしたいと考えています。

どうすればこのようなことが可能になるでしょうか?

4

2 に答える 2

0

@Html.ValidationSummary(true) -->正しい

  1. デフォルトのエラー メッセージをまとめて表示しません。
  2. 以下のステートメントを記述するだけで、カスタム メッセージを表示できます。 ModelState.AddModelError("", "This account is not registered in our system.");
  3. クラスで定義されたすべての注釈メッセージは、コントロールのすぐ隣にきちんと表示されます。
于 2013-05-23T17:23:42.203 に答える