2011-06-10 17 views
20

मैं @Html.ValidationMessageFor() के लिए ASP.NET MVC3 में एक अलग संदेश का उपयोग करने का प्रयास कर रहा हूं। यह ठीक काम करता है लेकिन ऐसा लगता है कि संदेश हमेशा प्रदर्शित होता है, उदा। अगर मैं ऐसा करता हूं:@ Html.ValidationMessageFor() कस्टम सत्यापन मैसेज हमेशा दिखाया गया

@Html.ValidationMessageFor(model => model.TimesheetEntry.Product) 

तब त्रुटि केवल तभी दिखाई जाती है जब मैं फॉर्म जमा करता हूं और यह अमान्य है। हालांकि अगर मैं ऐसा करता हूं:

@Html.ValidationMessageFor(model => model.TimesheetEntry.Product, "custom error") 

तब जैसे ही मैं पृष्ठ को प्रारंभ में लोड करता हूं, वह संदेश प्रदर्शित होता है। मैं शायद यहां कुछ बेवकूफ कर रहा हूं और किसी भी मदद की सराहना की जाएगी।

उत्तर

32

क्या आपने this question से सीएसएस की कोशिश की है?

.field-validation-valid 
{ 
    display: none; 
} 
.validation-summary-valid 
{ 
    display: none; 
} 
+0

हाँ, धन्यवाद - अब किया गया है और यह काम करता है। यह सिर्फ एक हैक लगता है हालांकि –

+2

@ टोम हाई मुझे लगता है कि यह सीएसएस एक नए एमवीसी 3 वेब एप्लिकेशन के साथ बॉक्स से बाहर जोड़ा गया है। मैंने जो उत्तर दिया है, वह सुझाव देता है कि सीएसएस को विकास के दौरान कभी-कभी हटा दिया गया था। –

+0

मुझे इन कक्षाओं को मैन्युअल रूप से क्यों जोड़ना है? मैंने सोचा कि एमवीसी इसे स्वचालित रूप से जोड़ देगा। वैसे भी, समाधान पूरी तरह से काम करता है। –

1

मैंने एमवीसी 3 में पर्याप्त सत्यापन के साथ नहीं खेला है, इसलिए मैं इस समस्या का निवारण करने के तरीके से चल रहा हूं।

मैं इस पर विचार करेंगे: http://msdn.microsoft.com/en-us/library/dd470929.aspx

हाँ, मानक MSDN प्रलेखीकरण, लेकिन ValidationMessageFor() विधि कहता है:

प्रत्येक डेटा फ़ील्ड के लिए एक मान्यता-त्रुटि संदेश के लिए HTML मार्कअप रिटर्न कि निर्दिष्ट संदेश का उपयोग कर निर्दिष्ट अभिव्यक्ति द्वारा प्रतिनिधित्व किया जाता है।

ऐसा लगता है कि, मुझे यह हमेशा संदेश वापस करना चाहिए, भले ही आप एक स्ट्रिंग के रूप में कस्टम संदेश की आपूर्ति नहीं कर रहे हों। ऐसा लगता है कि अन्य विधियां हैं जो निर्दिष्ट यूआरआई पर आपकी आवश्यकता के अनुरूप बेहतर हो सकती हैं।

+0

हाँ धन्यवाद कि दिलचस्प है में मॉडल पैरामीटर है। यह अजीब बात है कि ओवरलोड जो कस्टम संदेश नहीं लेता है, हालांकि अलग-अलग व्यवहार करता है (और हमेशा संदेश नहीं दिखाता है), भले ही उस पृष्ठ का विवरण समान है –

8

शायद आप अपने httpGet ActionResult विधि

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