17

私のコントローラーで、いくつかの ModelState エラーを追加します。したがって、ビューをレンダリングするときに、これらすべてのエラーを取得し、エラーを含むフィールドのラベルの色を変更したいと考えています。

したがって、すべての ModelState エラーを取得し、フィールド名を取得してから色を変更する必要があると思います。これは良い方法ですか?

ビューで ModelState エラーを取得するにはどうすればよいですか?

4

4 に答える 4

31

からアクセスできますViewData.ModelState。ビューのエラーをさらに制御する必要がある場合は、使用できます

ViewData.ModelState.IsValidField("name_of_input")

または、次のようなエラーのある入力のリストを取得します。

var errors = ViewData.ModelState.Where(n => n.Value.Errors.Count > 0).ToList();
于 2013-07-10T21:13:35.683 に答える
13

私のコントローラーで、いくつかの ModelState エラーを追加します。したがって、ビューをレンダリングするときに、これらすべてのエラーを取得し、エラーを含むフィールドのラベルの色を変更したいと考えています。

ビューで使用した Html.ValidationMessageFor ヘルパーとまったく同じキーを使用してモデル エラーを ModelState に追加すると、まさにこのようなことが起こります。

たとえば、フォームに次のスニペットがあるとします。

@Html.LabelFor(x => x.Bazinga)
@Html.EditorFor(x => x.Bazinga)
@Html.ValidationMessageFor(x => x.Bazinga)

Bazinga フィールドを強調表示するために、HttpPost コントローラー アクションに次のエラー メッセージを追加できます。

ModelState.AddModelError("Bazinga", "Please enter a valid value for the Bazinga field");

また、特定の入力フィールドに関連付けられていない一般的なエラー メッセージを追加したい場合は@Html.ValidationSummary()、フォームの上部にあるヘルパーをいつでも使用して表示できます。そして、コントローラーアクションで:

ModelState.AddModelError(string.Empty, "Some generic error occurred. Try again.");
于 2013-07-10T21:15:25.927 に答える