2012-11-14 16 views
8

मेरे पास एक पृष्ठ है, जहां मैं प्रत्येक सत्यापन संदेश को लॉग करना चाहता हूं जिसे उपयोगकर्ता संबद्ध क्षेत्र की आवश्यकताओं को पूरा करने में विफल रहा।असफल वैधताओं को खोजें asp.net

समस्या यह है कि मेरी पोस्टबैक/बटन क्लिक कभी नहीं होता है (शायद क्लाइंटसाइड सत्यापन के कारण), और इसलिए उपयोगकर्ता को वास्तव में हर क्षेत्र को सही (कोई सत्यापन त्रुटियां नहीं) होने से पहले लॉगिंग कभी नहीं होती है।

बटन क्लिक करें घटना विधि:

protected void btnNext_Click(object sender, EventArgs e) 
{ 
    Page.Validate(); 
    if(Page.IsValid) 
    { 
     //code 
    } 
    else 
    { 
     foreach (IValidator validator in Validators) 
     { 
      if (!validator.IsValid) 
      { 
       PageValidatorErrors error = new PageValidatorErrors 
           { 
            WebsiteID = AppState.WebsiteID, 
            Page = Request.Url.AbsolutePath, 
            URL = Request.Url.ToString(), 
            UserIP = Tools.GetIP(), 
            ErrorMessage = validator.ErrorMessage, 
            CreatedDate = DateTime.Now 
           }; 
       pageValidatorErrorsRep.insert(error); 
      } 
     } 
    } 
} 

कोई भी विचार, मैं कैसे संदेशों इन लॉग ऑन कर सकता है?

संपादित करें:

<script type="text/javascript"> 
    function validatePage() 
    { 
     if (window.Page_IsValid != true) 
     { 
      //Page_Validators is an array of validation controls in the page. 
      if (window.Page_Validators != undefined && window.Page_Validators != null) 
      { 
       //Looping through the whole validation collection. 
       for (var i = 0; i < window.Page_Validators.length; i++) 
       { 
        window.ValidatorEnable(window.Page_Validators[i]); 

        //if condition to check whether the validation was successfull or not. 
        if (!window.Page_Validators[i].isvalid) 
        { 
         var errMsg = window.Page_Validators[i].getAttribute('ErrorMessage'); 
         alert(errMsg); 
        } 
       } 
      } 
     } 
    } 
</script> 
+0

ओह, मैं देख रहा हूँ, आप कैसे ग्राहक में हुक करने पूछ रहे हैं साइड जावास्क्रिप्ट कि एएसपीनेट वैधकर्ता उत्सर्जित करते हैं। – MatthewMartin

+0

सत्यापनकर्ता लूप नमूना के लिए धन्यवाद, मैं बस इसे अपने आप लिखने वाला था :) – rdmptn

उत्तर

3

यहाँ समाधान का हिस्सा है, तो आप इसे ग्राहक के पक्ष लागू द्वारा पुष्टि/सही गलत प्राप्त कर सकते हैं:

http://razeeb.wordpress.com/2009/01/11/calling-aspnet-validators-from-javascript/

function performCheck() 
{ 

if(Page_ClientValidate()) 
{ 

//Do something to log true/ false 
} 

} 
+0

यह चाल हो सकती है, क्या आप जानते हैं कि मुझे "असफल" वैधता कैसे मिलती है या क्या मैं किसी भी तरह से सी # विधि कह सकता हूं? – KLIM8D

+0

जेएस लाइब्रेरी के लिए एमएसडीएन दस्तावेज़ का लिंक यहां दिया गया है कि मेरे संक्षिप्त पढ़ने से वैधकर्ता काम करते हैं, आपके पास इसके साथ काम करने के लिए बहुत कुछ नहीं है: http://msdn.microsoft.com/en-us/library/ aa338815 (v = vs.71) .aspx – MatthewMartin

+0

धन्यवाद, अब मैं वैधकर्ताओं के माध्यम से लूप करने में सक्षम हूं और चेतावनी देता हूं कि यह मान्य नहीं है। बस त्रुटि संदेश निकालने की आवश्यकता है, किसी कारण से यह प्रत्येक सत्यापनकर्ता के लिए शून्य है। मैंने विषय में जावास्क्रिप्ट जोड़ा है। – KLIM8D

2

कोशिश गलत पर सभी प्रमाणकों पर EnableClientScript संपत्ति को बदलने के लिए। आपके सभी सत्यापन केवल सर्वर पक्ष पर होंगे।

+0

हाँ, इसने पोस्टबैक काम किया है, जब आप टाइप करते हैं या फ़ील्ड पर सत्यापन के साथ फीचर के साथ फीचर कभी भी चला जाता है। यदि संभव हो तो मैं इसे रखना चाहूंगा। – KLIM8D

+0

मुझे लगता है कि यह सबसे अच्छा शर्त हो सकता है। पेज सत्यापनकर्ताओं से छुटकारा पाएं और इसे सभी सर्वर पक्ष करें। इस तरह आपके पास लॉग इन करने के बारे में बहुत अधिक नियंत्रण है। – NotMe