2009-04-25 5 views
9

मेरे पास एक ऐसा पृष्ठ है जो एक मास्टर पेज, कई आवश्यक फ़ील्ड वैलिडेटर्स और वेब टूलकिट स्वत: पूर्ण विस्तारक का उपयोग करता है। निम्नलिखित कोड केवल पेज के न्यूनतम पता चलता है:एएसपी: छविबटन पर क्लिक नहीं कर रहा है

<%@ Page Language="C#" 
    AutoEventWireup="true" 
    CodeFile="Login.aspx.cs" 
    MasterPageFile="~/master.master" 
    Inherits="Login" %> 

<asp:Content id="Content1" 
    contentplaceholderid="ContentPlaceHolder1" 
    runat="server"> 
    <asp:UpdatePanel ID="pnlUpdate" runat="server"> 
     <ContentTemplate> 
      <div> 
       <asp:ImageButton class="submitButton" 
        imageurl="images/button_submit.gif" 
        id="btnSubmit" 
        runat="server" 
        onclick="btnSubmit_ServerClick"/> 
      </div> 
     </ContentTemplate> 
    </asp:UpdatePanel> 
</asp:Content> 

कोड-पीछे:

protected void btnSubmit_ServerClick 
     (object sender, ImageClickEventArgs e) 
{ 
    //breakpoint here does not get hit 
} 

<form runat="server"> टैग मास्टर पृष्ठ में है। उपरोक्त कोड ऑनक्लिक घटना को आग नहीं लगाता है। अगर मैं मास्टर पेज से छुटकारा पाता हूं और पेज पर एक फॉर्म टैग जोड़ता हूं, तो यह काम करता है। क्या मास्टर पेज में फॉर्म टैग समर्थित नहीं है, या क्या यह किसी भी तरह काम करना चाहिए? alt text http://digitalcopy.warnerbros.com/images/mainmenu.gif?provider=00079&disc=03403AAA-1D20-47F2-91FA-5EE632832659

+0

OnCommand attr बजाय OnClick का उपयोग डेटा के माध्यम से बाध्यकारी रहे हैं, तो है। :) http://stackoverflow.com/a/15911261/1603799 – MiniRagnarok

उत्तर

0

आपको किसी फॉर्म runat = सर्वर में कहीं नियंत्रण होना है, यह मास्टर पेज या .aspx फ़ाइल में हो सकता है। दो बार जांचें कि मास्टर पेज फॉर्म टैग रनैट = सर्वर

AutoEventWireup वह प्रॉपर्टी है जो आप सिंटैक्स का उपयोग कर रहे हैं। मास्टर पेज, वेबफॉर्म में सेटिंग को दो बार जांचें और इसे web.config में भी सेट किया जा सकता है।

वह does not काम करते हैं, आप कर सकते हैं हमेशा स्पष्ट रूप कोड यह (जो मैं पसंद)

<script runat=server> 

protected override void OnInit(EventArgs e) 
    { 
     btnSubmit.Click += delegate(object sender, EventArgs e1) 
     { 

     }; 
     base.OnInit(e); 
    } 

</script> 

UpdatePanel सर्वर साइड घटनाओं के साथ गड़बड़ भी उठाया जा रहा सकता है, इसलिए UpdatePanel के बिना यह प्रयास करें। और मुझे यकीन है कि आपके पास मास्टर पेज

+0

मास्टर पृष्ठ भी AutoEventWireup = सच है, और web.config यह हावी नहीं होता। ओह। – cdonner

+0

मैंने मास्टर पेज से और सामग्री पृष्ठ में फॉर्म टैग (और स्क्रिप्ट मैनेजर) को स्थानांतरित कर दिया। घटना अब आग लगती है, और मेरे पास अभी भी मास्टर पेज है। आदर्श नहीं है, लेकिन अभी के लिए एक कामकाज पर्याप्त है। मास्टर पेज में केवल सादे HTML - – cdonner

+0

आप अपने मास्टर पेज में एक UpdatePanel है, तो यह –

0

आपके द्वारा प्रदान किए गए कोड से आपको स्क्रिप्ट मैनेजर है, तो आपको लगता है कि आपके पृष्ठ से <asp:scriptmanager> गुम है। आप निम्न में से एक कार्य करें:

  1. पृष्ठ पर <asp:scriptmanagerproxy> और मास्टर पृष्ठ पर <asp:scriptmanager> है।
  2. अपने पृष्ठ पर <asp:scriptmanager> और मास्टर पेज पर <asp:scriptmanager> है।

व्यक्तिगत रूप से, मैं मास्टर पेज पर <form> टैग रखने की अनुशंसा करता हूं, लेकिन यह व्यक्तिगत वरीयता है।

+0

ग्रेट प्वाइंट। एक scriptmanagerproxy जोड़ने हालांकि मदद नहीं की थी। मैंने फॉर्म को मास्टर पर वापस रखा, और स्क्रिप्टमैनगर को सामग्री पृष्ठ पर रखा, जिसने काम नहीं किया। यह केवल तभी काम करता है जब फ़ॉर्म और स्क्रिप्टमैन टैग दोनों सामग्री पृष्ठ पर हों। अजीब। – cdonner

0

आप हमेशा अपडेटपेनल को निकालने का प्रयास कर सकते हैं और देख सकते हैं कि यह काम करता है या नहीं। मैं आमतौर पर अपडेटपैनल के बिना शुरू करता हूं, जिस तरह से मैं चाहता हूं वैसे ही काम कर रहा हूं और फिर अपडेटपेनल में जोड़ें और जो भी कारण बनता है उसे डीबग करें।

मास्टरपेज में फॉर्म मेरे लिए काम करता है, इसलिए @ केल्टेक्स द्वारा वर्णित स्क्रिप्ट मैनेजर/स्क्रिप्ट मैनेजरप्रॉक्सी एक मुद्दा हो सकता है, हालांकि मैं उन्हें कभी-कभी भूल जाता हूं और आमतौर पर इससे दूर हो जाता हूं।

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

+0

मैंने जेएस के माध्यम से strep किया और घटना को संसाधित देखा, और कोई अपवाद उठाया। यह सर्वर को क्यों नहीं भेजा जाता है यह मेरे लिए स्पष्ट नहीं था। इसे समझने के लिए मुझे उत्पन्न क्लाइंट-साइड कोड में गहराई से खोदना होगा। अद्यतन पैनेल को हटाने से व्यवहार में कोई बदलाव नहीं आया। – cdonner

+0

यदि आप छवि बटन के लिए सामान्य बटन स्वैप करते हैं तो क्या होता है? क्या यह काम करता है? क्या यह सभी ब्राउज़रों में समान व्यवहार करता है? – Jared

+0

आपकी टिप्पणी को और अधिक बारीकी से पढ़ना यह एक वैधकर्ता/जेएस समस्या की तरह लगता है, क्योंकि यह इसे सर्वर पर वापस नहीं ला रहा है। क्या आपके पास नियंत्रण टूलकिट नियंत्रण जैसे कोई अन्य नियंत्रण हैं जो छवि बटन में हस्तक्षेप कर सकता है? – Jared

11

आप यह भी जांच सकते हैं कि आपका ImageButton सत्यापन को ट्रिगर नहीं करता है या नहीं। यदि यह अपनी कारणों की वैधता संपत्ति को गलत पर सेट करता है (बेशक अगर यह समझ में आता है)।

+0

यह सत्यापन ट्रिगर करता है, क्योंकि यह जगह पर कामकाज के साथ ठीक काम करता है। – cdonner

0

मेरे वेबपृष्ठ पर मैं एक अद्यतन पैनल द्वारा निहित एक तालिका के अंदर गतिशील रूप से imagebuttons बना रहा हूं।बटन के लिए इस कोड द्वारा बनाई गई हैं:

for (int i = 0; i < 15; i++) 
    { 
     TableRow tr = new TableRow(); 
     for (int j = 0; j < 20; j++) 
     { 
      TableCell tc = new TableCell(); 
      ImageButton ib = new ImageButton(); 
      ib.Click += new ImageClickEventHandler(ImageButton1_Click); 
      ib.ImageUrl = "../img/defaultCell.jpg"; 
      ib.ID = i + ":" + j; 
      tc.Controls.Add(ib); 
      tc.Width = 25; 
      tc.Height = 25; 
      tr.Cells.Add(tc); 
     } 
     GameTable.Rows.Add(tr); 
    } 

}

छवि बटन घटनाओं क्लिक ट्रिगर नहीं करेगा। हालांकि, अगर लाइन 'ib.ID = ...' टिप्पणी की गई है, तो वे करते हैं! वह एकल विकल्प सभी मुद्दों को ठीक करने लगता है। मुझे नहीं पता कि क्यों। यदि कोई इसे समझा सकता है, और मुझे बताएं कि बटन आईडी सेट करने की क्षमता रखने वाले ईवेंट को कैसे ट्रिगर करना है, तो मैं बहुत आभारी हूं

+3

आपको इसे एक अलग प्रश्न के रूप में पोस्ट करना चाहिए, जवाब के रूप में नहीं। –

0

मुझे लगता है कि यह आईडी के पुनः असाइन करने के तथ्य के साथ कुछ करने के लिए हो सकता है इवेंट हैंडलर को & बनाने के बाद?

क्या आपको आईडी को असाइन करने की भी आवश्यकता है? - निश्चित रूप से यह आपके लिए भी किया जाता है? - 'ib.ID = i + "को सही तरीके से हटा रहा है:" + j;'

3

मेरे पास एक समान समस्या थी (विभिन्न परिदृश्य)। मैंने Page.RegisterRequiresRaiseEvent(ImageButton) का उपयोग किया और मेरी ऑनक्लिक घटना आग लगनी शुरू हुई। मुझे ऐसा करने की ज़रूरत क्यों है? मुझे नहीं पता।

2

मेरे पास छवि बटन के साथ एक समान समस्या है और मूल कारण मिला है। आप

"ib.ID = i + ":" + j;"

ImageButton की आईडी के रूप में

उपयोग कर रहे हैं, ":", उपयोग करने के लिए अवैध नाम है के रूप में आप यह प्रोग्राम के रूप में बना रहे हैं, ASP.NET यह बनाए जा सकते हैं।

रनटाइम पर, यदि आप पृष्ठ के HTML स्रोत को देखते हैं, तो आप देखेंगे कि विशेष वर्णों को या तो अनदेखा किया जाता है या "_" के साथ प्रतिस्थापित किया जाता है। तो पृष्ठ सही नियंत्रण खोजने में असमर्थ है, इस प्रकार घटना आग नहीं जाएगी। सादा पाठ के साथ नाम बदलने का प्रयास करें, घटना आग लग जाएगी।

0

सुनिश्चित करें कि आप onClick

आपका अद्यतन पैनल पोस्टबैक के साथ खिलवाड़ किया जा सकता है बजाय OnClick का उपयोग करें। UpdatePanel के बिना इसे आज़माएं और देखें कि क्या वह अपराधी है या नहीं।

2

ib.ID = i + ":" + j;

ib.ID = i.toString()+":"+j.toString(); 

को बदला जाना चाहिए यह अभी भी निर्माण करने के लिए StringBuilder का इस्तेमाल कर रही आईडी कोशिश काम नहीं करता है और ib.ID संपत्ति को बाद में इसे आवंटित

0

मुझे एक ही समस्या थी कि OnClick इमेजबटन की घटना फायरिंग नहीं थी। लेकिन वास्तविक समस्या फॉर्म स्तर पर थी, मेरे पास onSubmit="return false;"

3

मेरा समाधान छविबटन के कारणों को गलत पर सेट करना था।

+0

धन्यवाद यह मेरी घटना फायरिंग को भी अवरुद्ध कर रहा था – JsonStatham

0

मुझे एक ही समस्या का सामना करना पड़ रहा था, जहां मैं गतिशील रूप से एक छविबटन बना रहा था और उस घटना का क्लिक ट्रिगर नहीं कर रहा था। इसलिए, मैंने छवि बटन बनाया है अगर (IsPostBack)। अब यह ठीक काम कर रहा है। और यहां तक ​​कि यदि पृष्ठ रीफ्रेश हो जाता है, तो छविबटन को बनाए रखा जाएगा।

0

मैंने अभी भी एक समान समस्या हल की है जहां आउटपुट कैश सक्षम था। asp:ImageButton से asp:Button में बदलते समय, ईवेंट सही ढंग से निकाल दिया जाता है। शायद asp:ImageButton में आउटपुट कैश के साथ कुछ बग है।

0

उपरोक्त सुझावों में से कोई भी मेरे लिए काम किया के बाद, मैं OnInit में बटन निर्माण को फोन करके किया एक और अवसर()। यह मेरी समस्या तय कर चुका है और अब ऑनक्लिक घटना फायरिंग है।

0

यह समाधान है कि मुझे

के लिए काम किया आप बाध्य नियंत्रण उसके बाद ही जवाब है कि मेरे लिए काम किया एक और सवाल से था attr

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