Pada contoh NerdDinner dari Professional ASP.NET MVC 1.0 ada metode untuk membuat makan malam baru seperti disalin di bawah ini (halaman 89 dari versi NerdDinner gratis).
Di sana ia memeriksa ModelState.IsValid benar. Tampaknya untuk memeriksa apakah model itu valid untuk database (yaitu, ia menangkap konversi tipe data, seperti tanggal dengan format yang tidak valid, tetapi bukan aturan bisnis). Benarkah itu?
Saat mengirimkan formulir, jika Anda memiliki kesalahan dalam tanggal, ModelState.IsValid akan salah dan Anda akan mendapatkan kembali kesalahan, tetapi hanya untuk tanggal karena AddRuleViolations tidak pernah dieksekusi. Jika Anda menghapus centang untuk ModelState.IsValid sepenuhnya, maka Anda akan mendapatkan semua kesalahan (karena pengecualian), termasuk menandai pada tanggal ketika itu tidak valid. Lalu, mengapa cek untuk ModelState.IsValid ada sama sekali? Apakah saya melewatkan sesuatu?
//
// 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);
}