私のコントローラーで、いくつかの ModelState エラーを追加します。したがって、ビューをレンダリングするときに、これらすべてのエラーを取得し、エラーを含むフィールドのラベルの色を変更したいと考えています。
したがって、すべての ModelState エラーを取得し、フィールド名を取得してから色を変更する必要があると思います。これは良い方法ですか?
ビューで ModelState エラーを取得するにはどうすればよいですか?
私のコントローラーで、いくつかの ModelState エラーを追加します。したがって、ビューをレンダリングするときに、これらすべてのエラーを取得し、エラーを含むフィールドのラベルの色を変更したいと考えています。
したがって、すべての ModelState エラーを取得し、フィールド名を取得してから色を変更する必要があると思います。これは良い方法ですか?
ビューで ModelState エラーを取得するにはどうすればよいですか?
からアクセスできますViewData.ModelState
。ビューのエラーをさらに制御する必要がある場合は、使用できます
ViewData.ModelState.IsValidField("name_of_input")
または、次のようなエラーのある入力のリストを取得します。
var errors = ViewData.ModelState.Where(n => n.Value.Errors.Count > 0).ToList();
私のコントローラーで、いくつかの 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.");