かなり古い .NET チュートリアル「Nerd Dinner」では、ルール違反に対するヘルパー クラスの使用について説明しています。このクラスを参照できるようにどこに配置すればよいかわからないことを除いて、すべてが簡単に思えます。私はMVCでかなり新しいです。
以下はすべて、Nerd Dinner Tutorialからの抜粋です。
AddRuleViolations ヘルパー メソッドの使用
最初の HTTP-POST Edit 実装では、catch ブロック内で foreach ステートメントを使用して、Dinner オブジェクトのルール違反をループ処理し、それらをコントローラーの ModelState コレクションに追加しました。
catch {
foreach (var issue in dinner.GetRuleViolations()) {
ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
}
return View(dinner);
}
「ControllerHelpers」クラスを NerdDinner プロジェクトに追加することで、このコードを少しきれいにすることができます。その中に、ASP.NET MVC ModelStateDictionary クラスにヘルパー メソッドを追加する「AddRuleViolations」拡張メソッドを実装します。この拡張メソッドは、ModelStateDictionary に RuleViolation エラーのリストを設定するために必要なロジックをカプセル化できます。
public static class ControllerHelpers {
public static void AddRuleViolations(この ModelStateDictionary modelState、IEnumerable エラー) {
foreach (RuleViolation issue in errors) {
modelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
}
} }