In the NerdDinner tutorial, Step 5
,下半部
完成编辑操作方法实现
有一段:
我们的编辑实现的好处是,无论是控制器类还是视图模板,都不必知道晚餐模型所实施的特定验证或业务规则。我们可以在将来向模型中添加额外的规则,而不必对控制器或视图进行任何代码更改,以支持它们。这为我们提供了灵活性,以便在将来以最少的代码更改轻松地发展我们的应用程序需求。
我的问题是什么样的规则可以加入,这样我就不会失去我的干净分离。我可以看到这个代码:
public static class ControllerHelpers {
public static void AddRuleViolations(this ModelStateDictionary modelState, IEnumerable<RuleViolation> errors) {
foreach (RuleViolation issue in errors) {
modelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
}
}
}
比此代码更好:
catch {
foreach (var issue in dinner.GetRuleViolations()) {
ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
}
return View(dinner);
}
因为我没有特定的类/模型信息,可以在整个应用程序中使用它。而且,如果我的错误处理像上面这样简单,我可以看出这有多好,但我不知道如何为新的业务规则添加更复杂的内容,我希望能举个例子。