2011-01-20 14 views
32

MVC3 के साथ आप कस्टम सत्यापन जोड़ने के लिए दो नए तंत्र है। ये हैं (1) सबक्लास वैलिडेशन एट्रिब्यूट या (2) IValidatableObject लागू करें।IValidatableObject - ग्राहक साइड सत्यापन

ValidationAttribute आप IClientValidatable को लागू करने के लिए (और jQuery के माध्यम से एक नया एडाप्टर और विधि दर्ज की) द्वारा अपेक्षाकृत बस ग्राहक साइड सत्यापन को जोड़ने के लिए अनुमति देता है।

IValidatableObject अधिक एक बंद मान्यता आवश्यकताओं को जहां पुन: उपयोग के एक विकल्प नहीं है के लिए अनुकूल है। यह भी slighlty सरल कोड में परिणाम। इसलिए यह कई परिदृश्यों के लिए मेरी पसंद होगी। दुर्भाग्यवश, मुझे इस विधि का उपयोग कर क्लाइंट साइड सत्यापन को लागू करने का एक आसान तरीका नहीं दिख रहा है।

तो प्रश्न यह है कि मैं क्या खो रहा हूं और IValidatableObject का उपयोग करते समय आपको जेएस सत्यापन कैसे प्राप्त होता है?

उत्तर

23

के रूप में शुरू करने के लिए इसका उपयोग कर सकते हैं क्योंकि मुझे यहां एक (वैध) उत्तर नहीं मिला, मैंने माइक्रोसॉफ्ट के कुछ लोगों से पूछा और उन्होंने पुष्टि की कि यह वर्तमान में संभव नहीं है।

ब्रैड विल्सन:

इस समय, केवल प्रॉपर्टी स्तर प्रमाणकों क्लाइंट साइड फेंकना कर सकते हैं सत्यापन (के रूप में है कि लाइनें ब्राउज़र के रूप में इनपुट सत्यापन के विचार के साथ ज्यादा बेहतर .. ब्राउज़र के दृष्टिकोण से बोलने के लिए कोई "मॉडल" नहीं है)।

स्टुअर्ट लीक:

मैं नहीं मानता कि आप IValidatableObject

+0

क्या इसका मतलब यह है कि दृश्य पर एक कस्टम जावास्क्रिप्ट सत्यापन को जोड़ने के लिए कोई आसान तरीका नहीं है? मैं एक साधारण कार्य करना चाहता हूं कि मैं मौजूदा क्लाइंट साइड सत्यापन तंत्र में प्लग कर सकूं। – pauloya

+0

[एक एएसपी.नेट मंच पोस्ट] (http://forums.asp.net/post/5593598.aspx): * वर्तमान में jquery सत्यापन केवल इनपुट फ़ील्ड को मान्य करता है (कोई मॉडल स्तर सत्यापन नहीं), इसलिए कक्षा के लिए कोई प्राकृतिक मैपिंग नहीं है स्तर सत्यापन। मॉडल स्तर सत्यापन जोड़ने का एक आम तरीका एक छिपी हुई फ़ील्ड जोड़ना है, और छिपे हुए मानचित्र मॉडल स्तर सत्यापन को जोड़ना है। * Http://stackoverflow.com/a/5817958/11683 इस दृष्टिकोण को demostrates - अपवाद के साथ कि क्षेत्र छिपा हुआ नहीं है । – GSerg

+0

मॉडल पर एक [रिमोट] विशेषता का उपयोग करने में मदद मिल सकती है; यहां और पढ़ें: http://msdn.microsoft.com/en-us/library/gg508808%28VS.98%29.aspx – Tohid

4

http://weblogs.asp.net/scottgu/archive/2010/07/27/introducing-asp-net-mvc-3-preview-1.aspx http://blogs.msdn.com/b/stuartleeks/archive/2010/07/28/asp-net-mvc-adding-client-side-validation-to-validatepasswordlengthattribute-in-asp- नेट MVC-3-पूर्वावलोकन-1.aspx

ASP.NET MVC 3 अब IValidateObject इंटरफ़ेस का सम्मान करता है जब मॉडल ( अन्य मान्यता के सभी के अलावा बंधन यह पहले से ही दृष्टिकोण MVC 2 के साथ समर्थित), और इससे सत्यापन त्रुटियों को पुनर्प्राप्त करेगा और स्वचालित रूप से ध्वज/हाइलाइट प्रभावित फ़ील्ड बुद्धि निर्मित HTML प्रपत्र सहायकों का उपयोग कर एक दृश्य का हीन।

ASP.NET MVC 3 भी एक नया IClientValidatable इंटरफ़ेस ASP.NET MVC क्रम एक सत्यापनकर्ता ग्राहक सत्यापन के लिए समर्थन हासिल है कि क्या खोजने के लिए अनुमति देता है कि प्रस्तुत करता है। यह इंटरफ़ेस डिज़ाइन किया गया है ताकि को विभिन्न प्रकार के सत्यापन फ्रेमवर्क के साथ एकीकृत किया जा सके। एमवीसी 3 भी एक नया IMetadataAware इंटरफ़ेस प्रस्तुत करता है जो कि मॉडलमैटाडाटा निर्माण प्रक्रिया में योगदान करने के तरीके को सरल बनाता है।

+2

यह सब सत्यापन करने के लिए क्लाइंट साइड सत्यापन जोड़ने से संबंधित है गुण जो जैसा कि मैंने कहा के साथ ग्राहक सत्यापन ऊपर हुक कर सकते हैं मेरे प्रश्न में, बहुत अच्छी तरह से काम करता है। मैं IValidatableObject को क्लाइंट साइड सत्यापन जोड़ने के बारे में पूछ रहा हूं। –

0

यह article एएसपी.नेट एमवीसी में क्लाइंट साइड सत्यापन में कंटेनर ऑब्जेक्ट तक पहुंचने का एक तरीका बताता है। आप अपने क्लाइंट साइड सत्यापन

+1

फिर, यह डेटा एनोटेशन से संबंधित है और एमवीसी 2 विशिष्ट है। एमवीसी 3 (आईसीलिएंट वैलिटेबल) में विशेषता आधारित सत्यापन के लिए क्लाइंट साइड सत्यापन जोड़ने के लिए एक पूरी तरह से अलग तंत्र है जो पुराने डेटा एन्नोटेशन मॉडलेलिडाइटर दृष्टिकोण से लागू करना बहुत आसान है। हालांकि, मैं विशेषताओं के बारे में बात नहीं कर रहा हूं, मैं सत्यापन के अन्य एमवीसी 3 तरीके के बारे में बात कर रहा हूं: IValidatableObject। –

+0

@ पॉलहाइल्स - हाय पॉल, क्या आपको एमवीसी में क्लाइंट साइड सत्यापन के लिए कुछ भी उपयुक्त मिला? –

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