Что такое ModelState.IsValid для ASP.NET MVC в NerdDinner?

НаNerdDinner примерПрофессиональный ASP.NET MVC 1.0 есть способ создать новый ужин как скопированный ниже (стр. 89 бесплатной версии NerdDinner).

Там он проверяет 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); 
} 

Ответы на вопрос(3)

Ваш ответ на вопрос