प्रोफेशनल ASP.NET MVC 1.0 के नर्डडिनर उदाहरण पर कॉपी किए गए बलो के रूप में एक नया डिनर बनाने की विधि है (मुक्त नर्डडिनर संस्करण का पृष्ठ 89)।
वहाँ यह जाँच करता है ModelState.IsValid सच के लिए। यह जाँचता है कि क्या मॉडल डेटाबेस के लिए मान्य है (यानी, यह डेटा प्रकार रूपांतरणों को पकड़ता है, जैसे कि अमान्य प्रारूप वाली तिथियां, लेकिन व्यावसायिक नियम नहीं)। क्या यह सच है?
फॉर्म जमा करते समय, यदि आपको तारीख में कोई त्रुटि है, तो ModelState.IsValid गलत हो जाएगा और आपको एक त्रुटि वापस मिल जाएगी, लेकिन केवल तारीख के लिए क्योंकि 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);
}