Professional ASP.NET MVC 1.0 의 NerdDinner 예제에는 복사 된 벨로우즈 (무료 NerdDinner 버전의 89 페이지)로 새 저녁 식사를 만드는 방법이 있습니다.
거기에서 ModelState.IsValid가 true인지 확인합니다. 모델이 데이터베이스에 유효한지 확인하는 것 같습니다 (즉, 형식이 잘못된 날짜이지만 비즈니스 규칙이 아닌 날짜와 같은 데이터 유형 변환을 잡습니다). 그게 사실입니까?
양식을 제출할 때 날짜에 오류가 있으면 ModelState.IsValid가 false가되고 AddRuleViolations가 실행되지 않았기 때문에 날짜에 대해서만 오류가 발생합니다. ModelState.IsValid에 대한 검사를 완전히 제거하면 유효하지 않은 날짜의 표시를 포함하여 (예외로 인해) 모든 오류가 발생합니다. 그렇다면 왜 ModelState.IsValid 검사가 있습니까? 뭔가 빠졌습니까?
//
// POST: /Dinners/Create
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create(Dinner dinner) {
if (ModelState.IsValid) {
try {
dinner.HostedBy = "SomeUser";
dinnerRepository.Add(dinner);
dinnerRepository.Save();
return RedirectToAction("Details", new {id = dinner.DinnerID });
} catch {
ModelState.AddRuleViolations(dinner.GetRuleViolations());
}
}
return View(dinner);
}