2012-12-19 16 views
5

मैं एक CustomValidator है और मैं इसके बारे में हर संभव पैरामीटर परिभाषित:CustomValidator संदेश दिखाई नहीं करता है

<asp:CustomValidator ID="custom" runat="server" Text="*" ErrorMessage="This email address is already registered" ControlToValidate="txtEmail" OnServerValidate="isExist" Display="None" ValidationGroup="valRegister"></asp:CustomValidator> 

पुनश्च: मैं एक ही पाठ बॉक्स के लिए एक RequiredFieldValidator है और मैं रिक्त मान जाँच करना चाहते हैं न।

यहाँ फार्म की अन्य वस्तुओं हैं:

<div class="row"><asp:Label runat="server" Text="Email" AssociatedControlID="txtEmail"></asp:Label><asp:RequiredFieldValidator runat="server" ErrorMessage="Please enter your email" Text="*" ControlToValidate="txtEmail"></asp:RequiredFieldValidator><asp:TextBox ID="txtEmail" runat="server" CssClass="inpBox"></asp:TextBox></div> 

<asp:Button runat="server" Text="Register" CssClass="btn" OnClick="register_member" CausesValidation="true" ValidationGroup="valRegister" /> 

<asp:ValidationSummary ID="validationSummary" runat="server" ShowMessageBox="true" ShowSummary="false" ValidationGroup="valRegister" /> 

protected void isExist(object sender, ServerValidateEventArgs args){ 
if (cre.member.isExist(args.Value)){ 
    args.IsValid = false; 
} else { 
    args.IsValid = true; 
} 

}

जब मैं एक ईमेल डाल पहले से ही db तालिका में मौजूद * प्रपत्र पर दिखाई देता है, लेकिन त्रुटि संदेश दिखाई नहीं देता है। मैंने कस्टम त्रुटि के लिए सभी प्रदर्शन विकल्पों की कोशिश की लेकिन कोई भाग्य नहीं।

उत्तर

4

मैंने कोड को आपके प्रश्न में बिल्कुल ठीक किया।

Display="None"Display="Dynamic"asp:CustomValidator में बदलकर तारांकन प्रकट होता है।

ShowSummary="false"ShowSummary="true"asp:ValidationSummary में बदलते हुए त्रुटि संदेश सारांश में प्रकट होने का कारण बनता है।

+0

मुझे आपके उत्तर के साथ कुछ एहसास हुआ, ऑनसेवर वैलिडेट केवल तभी काम करता है जब सत्यापन सारांश> शोसमरी "सत्य" है। ShowMessageBox क्लाइंट साइड पर काम करता है और उस वजह से OnServerValidate काम नहीं करता है। मैंने दर्ज किए गए ईमेल पते की जांच करने के लिए एएसएक्सएक्स पेज पर एजेक्स कॉल जोड़कर अपनी समस्या हल की और फिर मैंने जेएस फ़ंक्शन को कॉल करने के लिए क्लाइंट वैलिडेशन फ़ंक्शन का उपयोग किया। – dvdmn

+0

आह! क्षमा करें, मुझे एहसास नहीं हुआ कि यह संदेशबॉक्स सत्यापन त्रुटि थी जिसके बाद आप थे। हां, यदि आप क्लाइंट-साइड संदेशबॉक्स चाहते हैं लेकिन सर्वर की भागीदारी की आवश्यकता है (उदा। डेटाबेस में ईमेल पता की जांच करने के लिए) तो आपको ऐसा कुछ करना होगा। – Carson63000

1

बदलने Display"Dynamic" या कुछ भी करने के लिए वास्तव में जब <asp:CustomValidator का उपयोग कर यदि सर्वर सत्यापन मैन्युअल से निपटने नहीं है, विशेष रूप से कुछ भी नहीं है। यहां तक ​​कि ValidationGroupValidationSummary के साथ या उसके बिना कुछ भी नहीं करता है।

से पहले पर उपयोगकर्ता को फॉर्म/ग्रिडव्यू/आदि से बाहर निकलने की अनुमति देने पर हमेशा एक सत्यापन को मजबूर करें।

यानी

  ...your form here... 
      <tr> 
       <td colspan="3" style="text-align: center" valign="top"> 
        <asp:Button ID="ButtonSubmit" runat="server" Text="Submit" OnClick="Submit_Click" CausesValidation="true" /> 
        <asp:Button ID="ButtonCancel" runat="server" Text="Cancel" OnClick="Cancel_Click" CausesValidation="false" /> 
       </td> 
      </tr> 
     </table> 
    </asp:Panel> 

... 
    protected void Submit_Click(object sender, EventArgs e) 
    { 
     Page.Validate(); 
     if (Page.IsValid) 
     { 
      //processing done after a successful submit here! 
     } 
    } 

Page.Validate() सत्यापन के लिए बाध्य करेगा जाँच करें और अपनी त्रुटि संदेश प्रदर्शित करने के लिए नियंत्रित करता है।

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