इस ट्यूटोरियल में हम वैलिडेशन कंट्रोल के बारे में पढ़ेंगे ASP.NET टेक्नोलॉजी के अंतर्गत जब किसी फॉर्म को सर्वर पर सबमिट किया जाता है तो उस फॉर्म में स्थित जितने भी कंट्रोल्स होते हैं उन सभी कंट्रोल्स के वैल्यूज का वैलिडेशन करना आवश्यक होता है। वैलिडेशन करना इस लिए आवश्यक है क्योंकि ऐसा सम्भव है कि किसी अनिवार्य डाटा को यूजर ने इनपुट नहीं किया हो अथवा गलत डाटा इनपुट किया हो इत्यादि।
स्टैण्डर्ड वैलिडेशन कंट्रोल
ASP.NET टेक्नोलॉजी किसी भी कंट्रोल के वैल्यूज का वैलिडेशन करने के लिए वैलिडेशन कंट्रोल प्रोवाइड करती है। इन वेलिडेशन कंट्रोल्स की मदद से वेब डेवलपर ASP.NET एप्लीकेशन के भीतर बहुत ही सरलता से विभिन्न प्रकार के वैलिडेशन कर लेते हैं। उदाहरण के लिए ASP.NET फ्रेमवर्क के भीतर छह प्रकार के वैलिडेशन कंट्रोल उपलब्ध कराए गए हैं, वे इस प्रकार हैं-
RequiredFieldValidator
RangeValidator
CompareValidator
RegularExpressionValidator
CustomValidator
ValidationSummary
ऊपर बताएं इन सभी वैलिडेशन कंट्रोल को किसी भी फॉर्म कंट्रोल के साथ संबंधित करके उस कंट्रोल के वैल्यू का वैलिडेशन कर सकते हैं।
ASP.NET फोन के अंतर्गत किसी पेज का वैलिडेशन करने के लिए पेज के IsValid प्रॉपर्टी का उपयोग करते हैं। उस पेज पर स्थित सभी कंट्रोल्स की वैलिडेशन की सत्यता की जांच कर यह true या false वैल्यू वापस करता है।
वैलिडेशन कंट्रोल के प्रॉपर्टीज
जितने भी वैलिडेशन कंट्रोल्स है उन सभी की कुछ प्रॉपर्टीज महत्वपूर्ण है। कुछ महत्त्वपूर्ण वैलिडेशन प्रोपर्टीज इस प्रकार हैं-
१) id="vldRequired1"
२) ControlToValidate="txtTextBox1"
३) Text="(Required)"
४) Runat="Server"
५) Display= Static|Dynamic|None
६) Type="Integer"|"GreaterThan"|"Currency"|
७) Operator="DataTypeCheck"|
८) EnableClientScript="true"|"false"
९) SetFocusOnError ="true"|"false"
१०) MinimumValue="5"
११) MaximumValue="10"
१२) ControlToCompare
१३) ValueToCompare
१४) ValidationGroup="Grp1"
वैलिडेशन कंट्रोल के प्रकार के अनुसार इन प्रॉपर्टीज का निर्धारण होता है। कुछ प्रॉपर्टीज ऐसे हैं जो कुछ खास तरह के वैलिडेशन कंट्रोल में यूज किए जाते हैं।
अब हम वेलिडेशन कंट्रोल्स की इन प्रोपर्टीज को समझ्ते हैं।
१) id="vldRequired1"
Id प्रोपर्टी का उपयोग किसी वैलिडेशन कंट्रोल के यूनिक पहचान के लिए है। उदाहरण के लिए, किसी वैलिडेशन कंट्रोल का id, vldRequired1 दिया जा सकता है।
२) ControlToValidate="txtTextBox1
ControlToValidate का उपयोग जिस कंट्रोल को वैलिडेट करना होता है, उसके लिए किया जाता है। ControlToValidate को उस कंट्रोल का नाम assign किया जाता है।
३) Text="(Required)"
Text प्रोपर्टी का उपयोग वैलिडेशन सम्बंधित निर्देश को यूजर को निर्देशित करने के लिए किया जाता है।
४) Runat="Server"
Runat प्रोपर्टी का यूज कर कंट्रोल को सर्वर कंट्रोल बनाते हैं।
५) Display= "Static|Dynamic|None"
Display प्रोपर्टी का तीन सम्भव है Static, Dynamic, None
वैलिडेशन कंट्रोल की Display प्रॉपर्टी के द्वारा किसी भी वैलिडेशन एरर को दिखाई जाता है। अगर आप Display प्रॉपर्टी का मान Static रखते हैं तो यह वैलिडेशन एरर के टेक्स्ट को जगह देता है लेकिन बगल के कंट्रोल के text के कारण विस्थापित हो सकता है। इसके विपरीत अगर वैलिडेशन कंट्रोल की Display प्रॉपर्टी का मान Dynamic देते हैं तो यह अन्य कंट्रोल के टेक्स्ट के कारण विस्थापित टेक्स्ट नहीं करता है। इसके विपरीत जब Display का मन None देते हैं तो वह वैलिडेशन एरर को Display नहीं करता है।
८) EnableClientScript="true"|"false"
ऊपर बताएं गए वैलिडेटर कंट्रोल, आमतौर पर, दोनों तरह के वेलिडेशन सर्वर साइड और क्लाइंट साइड वेलिडेशन करते हैं। यदि आप क्लाइंट साइड वेलिडेशन नहीं करना चाहते हैं तो इसको disabled किया जा सकता है। आमतौर पर जितने भी फॉर्म कंट्रोल्स होते हैं, उन सभी कंट्रोल्स का वैलिडेशन किया जाता है और यह वैलिडेशन क्लाइंट साइड भी होता है और server-side भी होता है। अगर आप चाहते हैं कि क्लाइंट साइड वैलिडेशन नहीं हो तो वैलिडेशन कंट्रोल की प्रॉपर्टी EnableClientScript का मान False देते हैं।
९) SetFocusOnError ="true"|"false"
सभी वैलिडेशन कंट्रोल SetFocusOnError प्रोपर्टी को सपोर्ट करते हैं। जब इस प्रोपर्टी के मान को true किया जाता है तो जब किसी प्रकार का वेलिडेशन त्रुटि होने पर उस कंट्रोल पर फोकस चला जाता है जिसपर त्रुटि हुई है।
१४) ValidationGroup="Grp1"
ValidationGroup प्रोपर्टी का उपयोग किसी वेब फॉर्म के ऊपर दिए कन्ट्रोल्स को अलग अलग ग्रुप/समूहों में वर्गीकृत करने के लिए किया जाता है। जितने भी वैलिडेशन कॉन्ट्रोल्स हैं उनको जिस ग्रुप में रखना होता है, उस ग्रुप का कोई यथोचित नाम दे दिया जाता है। मान लीजिए कि एक वेबपेज पर दो फॉर्म है। एक रजिस्ट्रेशन फॉर्म है और दूसरा लॉगिनफॉर्म है। रजिस्ट्रेशन फॉर्म के लिए हम उसके प्रत्येक वैलिडेशन कंट्रोल के साथ वैलिडेशन ग्रुप ValidationGroup="Registration" दे सकते हैं और इसी प्रकार, लॉगिनफॉर्म के प्रत्येक वैलिडेशन कंट्रोल के साथ हम वैलिडेशन ग्रुप ValidationGroup="Login" दे सकते हैं।
इसका लाभ यह होता है कि जब यूजर रजिस्ट्रेशन फॉर्म को सबमिट करता है तो केवल रजिस्ट्रेशन फॉर्म के कंट्रोल का ही वेलिडेशन होता है ना कि लॉगिनफॉर्म का। इसी प्रकार जब यूजर लॉगिनफॉर्म को सबमिट करता है तो केवल लॉगिनफॉर्म के कंट्रोल का वैलिडेशन होता है ना कि रजिस्ट्रेशन फॉर्म का। वैलिडेशन ग्रुप के अभाव में जब यूजर ऐसे वेबपेज को सबमिट करता है तो उसके सारे कंट्रोल्स, रेजिस्ट्रेशन फॉर्म और लॉगिनफॉर्म, का वैलिडेशन होता है जो कि अनावश्यक है।
१५) CausesValidation ="false"
कई बार ऐसा होता है कि हम किसी वेबपेज के किसी भी कंट्रोल के ऊपर वेलिडेशन नहीं करना चाहते हैं, अर्थात वेलिडेशन को डिसेबल करना चाहते हैं तो इसके लिए हम उस कंट्रोल के साथ इस प्रोपर्टी का यूज करते हैं। उदाहरण के लिए, किसी बटन के क्लिक करने के बाद यदि हम कैंसिल करना चाहते हैं तो उस बटन के साथ इस प्रोपर्टी का उपयोग करते हैं। ध्यातव्य है कि यह प्रोपर्टी कोई वेवैलिडेर कंट्रोल की प्रॉपर्टी नहीं है।
RequiredFieldValidator कंट्रोल
RequiredFieldValidator कंट्रोल का उपयोग वेबफॉर्म के कंट्रोल में यह सत्यापित/वैलिडेट करता है कि उसमें डाटा है अथवा नहीं। वस्तुतः यह यूजर को उससे सम्बंधित कंट्रोल में डाटा इनपुट के लिए बाध्य करता है। रिक्वायर्ड का अर्थ है कि उसने डाटा का होना अनिवार्य है और यदि यूजर कंट्रोल में डाटा इनपुट नहीं करता है तो ऐसी स्थिति में RequiredFieldValidator कंट्रोल त्रुटि प्रकट करता है। उदाहरण के लिए, मान लीजिए, किसी टेक्स्ट बॉक्स में यूजरनेम डालना अनिवार्य है तो उस टेक्स्ट बॉक्स कंट्रोल के साथ RequiredFieldValidator कंट्रोल का यूज़ करना चाहिए। ऐसी स्थिति में यदि यूजर टेक्स्ट बॉक्स कंट्रोल में यूजरनेम इनपुट नहीं करता है तो RequiredFieldValidator कंट्रोल त्रुटि प्रदर्शित करेगा। RequiredFieldValidator कंट्रोल की प्रॉपर्टी ControlToValidate में उस कंट्रोल का नाम assign करते हैं जिस कंट्रोल के ऊपर यह वेलिडेशन आरोपित करना होता है।
RequiredFieldValidator से सम्बंधित महत्वपूर्ण प्रोपर्टीज हैं १) ControlToValidate="cboColorBox1" २) Text="(Required)" इत्यादि।
RangeValidator कंट्रोल
RangeValidator कंट्रोल का उपयोग किसी कंट्रोल के न्यूनतम और अधिकतम मान को सत्यापित करने के लिए किया जाता है। यदि यूजर निर्धारित न्यूनतम मान और अधिकतम मान की सीमा के अतिरिक्त कोई मान इनपुट करता है तो RangeValidator कंट्रोल त्रुटि प्रदर्शित करता है। RangeValidator से सम्बंधित महत्वपूर्ण प्रोपर्टीज हैं १) ControlToValidate="cboColorBox1" २) Text="(Required)" ३) MinimumValue="5" ४) MaximumValue="10" ५) Type= "String| Integer|Date|Currency" इत्यादि।
CompareValidator कंट्रोल
CompareValidator कंट्रोल का उपयोग किसी कंट्रोल के मान का इच्छित मान से तुलना अथवा उस कंट्रोल के डाटा टाइप की तुलना इच्छित डाटा टाइप से तुलना करने के लिए किया जाता है। इसके अतिरिक्त, दो कंट्रोल्स के मानों की तुलना करने के लिए भी इसका उपयोग किया जाता है।
प्रथम स्थिति:-
कंट्रोल के मान की तुलना इच्छित मान से करने के लिए ValueToCompare और Operator प्रोपर्टी का उपयोग एक साथ किया जाता है। अगर किसी कंट्रोल के मान की जांच करनी हो कि इसके मान 10 से ज्यादा है अथवा नहीं तो इसके लिए भी CompareValidator कंट्रोल का उपयोग करेंगे और उसके साथ ValueToCompare="10" और Operator="GreaterThan" का यूज करेंगे।
द्वितीय स्थिति:-
इसी तरह, डाटा टाइप की तुलना इच्छित टाइप से करने के लिए Type="xxx" और Operator="DataTypeCheck" प्रोपर्टी का यूज एक साथ किया जाता है। यहाँ xxx की जगह "String| Integer|Date|Currency" इत्यादि होगा।
तृतीय स्थिति:-
मान लीजिए किसी फॉर्म के भीतर 2 टेक्स्टबॉक्स है। पहले टेक्सटबॉक्स के भीतर पासवर्ड और उसी पासवर्ड की पुनरावृति दूसरे टेक्सटबॉक्स में है और यह तुलना करनी है कि दोनों पासवर्ड के मान समान है या नहीं तो इसके लिए CompareValidator कंट्रोल का उपयोग किया जा सकता है। उससे सम्बंधित प्रोपर्टीज निम्नलिखित हैं-
ControlToValidate="txtPassword1"
ControlToCompare="txtPassword2"
Operator="Equal"
इसी तरह यदि दो दिनांकों की तुलना करना हो तो यह निम्न प्रकार का होगा-
Text="(End Date be greater than Start date)"
ControlToValidate="txtEndDate"
ControlToCompare="txtStartDate"
Type="Date"
Operator="GreaterThan"
Runat="Server"
RegularExpressionValidator कंट्रोल
RegularExpressionValidator कंट्रोल का उपयोग रेगुलर एक्सप्रेशन के पैटर्न की वेलिडेशन/जाँच के लिए किया जाता है। उदाहरण के लिए, अगर किसी टेक्स्ट बॉक्स में ईमेल आईडी इनपुट करना हो तो उस ईमेल आईडी से संबंधित एक पैटर्न होता है। इस ईमेल के पैटर्न की वेलिडेशन के लिए RegularExpressionValidator कंट्रोल का उपयोग किया जाता है।
ईमेल का पैटर्न:- जैसा कि हम जानते हैं कि ईमेल आईडी का आरंभ एक या एक से अधिक लेटर से होता है उसके पश्चात @ सिंबल होता है, पुनः उसके बाद एक या एक से अधिक करैक्टर होते हैं जिसके बाद डॉट सिम्बल होता है और उसके बाद पुनः एक या एक से अधिक कैरेक्टर होता है। जैसे ajeet@gmail.com
अगर ईमेल के इस पैटर्न को किसी नियम के अनुसार पारिभाषिक किया जाए तो उस पैटर्न के नियम को परिभाषित करने के लिए खास तरह के अर्थ वाले सिंबल/कैरेक्टर का यूज करना पड़ता है। इन लेटर या कैरेक्टर को मेटाकैरेक्टर कहते हैं और इन मेटाकैरेक्टर से बने एक्सप्रेशन को रेगुलर एक्सप्रेशन कहते हैं।
वस्तुतः, रेगुलर एक्सप्रेशन के भीतर सामान्य कैरेक्टर और मेटाकैरेक्टर का समूह होता है। जब किसी कैरेक्टर का अर्थ सामान्य अर्थ से हटकर नवीन अर्थ हो जाता है तो ऐसे कैरेक्टर को मेटाकैरेक्टर कहते हैं और रेगुलर एक्सप्रेशन के पैटर्न में मेटाकैरेक्टर और सामान्य कैरेक्टर्स के प्रयोग द्वारा पैटर्न को पारिभाषित किया जाता है।
Page.IsValid और Page.Validators collection
लेखक अजीत कुमार ३०/८/२०२१
© अजीत कुमार, सर्वाधिकार सुरक्षित।
इस आलेख को उद्धृत करते हुए इस लेख के लिंक का भी विवरण दें। इस आलेख को कॉपीराइट सूचना के साथ यथावत साझा करने की अनुमति है। कृपया इसे ऐसे स्थान पर साझा न करें जहाँ इसे देखने के लिए शुल्क देना पडे।
No comments:
Post a Comment