2009-04-26 13 views
11

मेरे पास निम्न रेगेक्स सेट है जो ValidationExpression संपत्ति को एक वेब फ़ॉर्म में RegularExpressionValidator पर सेट करता है। जब मैं मान्य नियंत्रण में एक अवैध चरित्र दर्ज करता हूं, तो सत्यापनकर्ता इसका पता लगाता है और एक त्रुटि संदेश दिखाता है।RegularExpressionValidator खाली तारों का पता नहीं लगाता

<appSettings> 
    <add key="categoryPattern" value="^[a-zA-Z0-9_+\-() ]{1,50}$" /> 
</appSettings> 

मेरे सत्यापनकर्ता:

<asp:RegularExpressionValidator ValidationExpression="<%$ AppSettings:categoryPattern %>" 

मेरे सर्वर साइड सत्यापन:

Regex rex = new Regex(ConfigurationManager.AppSettings["categoryPattern"]); 
if (!rex.Match(categoryName).Success) 
{ 
    throw new ArgumentException("CategoryName must match expression: " + rex); 

आप देख सकते हैं, वास्तव में एक ही पैटर्न लागू किया जाता है क्लाइंट पक्ष और सर्वर साइड।

हालांकि, जब मैं मान्य नियंत्रण को साफ़ करता हूं और खाली स्ट्रिंग जमा करता हूं, तो सत्यापनकर्ता सोचता है कि यह ठीक है, और मुझे अपने सर्वर पक्ष सत्यापन से कोई त्रुटि मिलती है। RegularExpressionValidator के टूटे हुए अनुबंध को छोड़कर, किसी को भी पता है कि क्या गलत है?

उत्तर

17

यह डिज़ाइन द्वारा है। उपयोगकर्ता प्रविष्टि को मजबूर करने के लिए आपको RequiredFieldValidator भी जोड़ना चाहिए। RegularExpressionValidator रिक्त फ़ील्ड मान्य के रूप में मानता है (और उन्हें Regex के माध्यम से भी नहीं चलाता है)। इसका कारण यह है कि उदाहरण के लिए, आपके पास एक ऐसे प्रारूप में वैकल्पिक Email address 2 फ़ील्ड हो सकता है, लेकिन यदि यह दर्ज किया गया है, तो यह एक वैध ईमेल पता होना चाहिए। इसे आसानी से प्राप्त करने के लिए, अन्य वैधकर्ता खाली फ़ील्ड को अनदेखा करते हैं और यदि आपको उन्हें आवश्यक बनाने की आवश्यकता है, तो आप बस एक और RequiredFieldValidator जोड़ देंगे।

वास्तव में, मैन्युअल रूप से सर्वर पर पुनरीक्षण करने के लिए आवश्यक नहीं है। एएसपी.नेट सत्यापनकर्ता भी इसे निर्मित सर्वर-साइड सत्यापन का समर्थन करते हैं। आप बस Page.IsValid संपत्ति देख सकते हैं।

+0

धन्यवाद @ मेहरदाद, मैंने एक आवश्यक फ़ील्ड वैलिडेटर जोड़ा है, लेकिन मेरा सर्वर सत्यापन पृष्ठ पर नहीं है, लेकिन पृष्ठ द्वारा उपयोग की जाने वाली कक्षा में, और संभावित रूप से अन्य कोड, इसलिए मैं इसे रख रहा हूं। – ProfK

+0

आपका स्वागत है। –

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