2013-03-14 23 views
7

मैं टेलरिक एमवीसी ग्रिड का उपयोग कर रहा हूं। मेरी तालिका में मेरे पास एक फ़ील्ड के लिए परिभाषित अद्वितीय कुंजी है। और नियंत्रक में मैं कोशिश कर त्रुटि का सामना कर रहा हूँ ... DbUpdateException के अंदर पकड़ो।ModelState.AddModelError कोई संदेश नहीं दिखा रहा है

कैच ब्लॉक में मैं त्रुटि को संभालना चाहता हूं और त्रुटि संदेश को देखना चाहता हूं। तो निम्नलिखित पंक्ति का उपयोग करके,

ModelState.AddModelError("PROGRAM_ID", "Access for this program already exists."); 
return View(); 

लेकिन यह त्रुटि संदेश नहीं दिखा रहा है। कोई विचार क्यों?

+0

क्या आपके पास अपने मॉडल में "PROGRAM_ID" नाम के साथ संपत्ति भी है? और सुनिश्चित करें कि आपके पास डारिन –

उत्तर

10

सुनिश्चित करें कि आप एक ही कुंजी के साथ अपने दृश्य में एक इसी ValidationMessage किया हुआ है:

@Html.ValidationMessage("PROGRAM_ID") 
+0

द्वारा सुझाए गए सत्यापन सहायक कॉल हैं लेकिन मैं टेलरिक एमवीसी ग्रिड और इनलाइन ऐड/एडिट मोड –

+0

का उपयोग कर रहा हूं, तो मुझे लगता है कि आप गलत कुंजी में मॉडल त्रुटि जोड़ रहे हैं। आपके पास शायद उन आईडी की एक सरणी है। कुछ 'ModelState.AddModelError ("कुछ चयन [2] .PROGRAM_ID", "इस प्रोग्राम के लिए एक्सेस पहले से मौजूद है।"); '। बेशक यह सब आपके मॉडल पर निर्भर करेगा। –

+0

नहीं .. मैंने दोबारा जांच की है ... संपत्ति का नाम उचित है और यह भी एक एकल मान फ़ील्ड एक सरणी नहीं है .. –

7

ValidationSummary केवल कुंजी के रूप में string.empty के लिए ModelErrors प्रदर्शित करेगा। ModelState.AddModelError के साथ आपके सत्यापन में जोड़ा गया त्रुटि प्रदर्शित करने के लिए, अपना कोड बदलें:

ModelState.AddModelError(string.Empty, "Access for this program already exists."); 
संबंधित मुद्दे