2013-07-10 5 views
6

पर देखें मेरे नियंत्रक पर मैं कुछ मॉडलस्टेट त्रुटियां जोड़ता हूं। इसलिए, जब मैं अपना दृश्य प्रस्तुत करता हूं, तो मैं इन सभी त्रुटियों को प्राप्त करना चाहता हूं और उन फ़ील्ड के लेबलों का रंग बदल सकता हूं जिनमें त्रुटि होती है।सभी मॉड्यूलस्टेट त्रुटियों को

तो, मुझे लगता है कि मुझे सभी मॉडलस्टेट त्रुटियां प्राप्त करने, फ़ील्ड नाम प्राप्त करने और फिर रंग बदलने की आवश्यकता है। यह एक अच्छा तरीका है?

मैं अपने दृश्य में मॉडलस्टेट त्रुटियों को कैसे प्राप्त कर सकता हूं?

उत्तर

16

आप इसे ViewData.ModelState के माध्यम से एक्सेस कर सकते हैं। आप अपने दृश्य पर त्रुटियों के साथ और अधिक नियंत्रण की जरूरत है आप

ViewData.ModelState.IsValidField("name_of_input")

का उपयोग करें या इस तरह त्रुटियों के साथ आदानों की एक सूची प्राप्त कर सकते हैं:

var errors = ViewData.ModelState.Where(n => n.Value.Errors.Count > 0).ToList(); 
+1

भी http://stackoverflow.com/questions/1352948/how-to-get-all-errors-from-asp-net-mvc-modelstate – Alexey

8

मेरी नियंत्रक पर मैं कुछ ModelState जोड़ने त्रुटियाँ। इसलिए, जब मैं अपना प्रस्तुत करता हूं, तो मैं इन सभी त्रुटियों को प्राप्त करना चाहता हूं और फ़ील्ड के लेबल को बदलना चाहता हूं जिसमें त्रुटि है।

यह ठीक है कि क्या होगा यदि आप मॉडलस्टेट में एचटीएमएल के समान मॉडल के साथ मॉडल त्रुटि जोड़ते हैं। वैलिडेशन मैसेज फॉर हेल्पर जिसे आप अपने दृश्य में इस्तेमाल करते हैं।

इसलिए उदाहरण के लिए मान लें कि आपके रूप में आप यह स्निपेट मिल गया है चलो:

@Html.LabelFor(x => x.Bazinga) 
@Html.EditorFor(x => x.Bazinga) 
@Html.ValidationMessageFor(x => x.Bazinga) 

और अपने HttpPost नियंत्रक कार्रवाई आप Bazinga क्षेत्र उजागर करने के लिए निम्न त्रुटि संदेश जोड़ सकते में:

ModelState.AddModelError("Bazinga", "Please enter a valid value for the Bazinga field"); 

और तुम जो कुछ विशिष्ट इनपुट क्षेत्र से संबद्ध नहीं है आप हमेशा यह प्रदर्शित करने के लिए अपने प्रपत्र के शीर्ष पर @Html.ValidationSummary() सहायक इस्तेमाल कर सकते हैं कुछ सामान्य त्रुटि संदेश जोड़ना चाहते थे, तो। और अपने नियंत्रक कार्रवाई में:

ModelState.AddModelError(string.Empty, "Some generic error occurred. Try again."); 
+0

अच्छा देखो! लेकिन मुझे त्रुटियों को प्राप्त करने की आवश्यकता है, ValidationMessageFor का उपयोग नहीं कर रहा है। यह एक अच्छा उदाहरण है –

संबंधित मुद्दे