2013-12-10 12 views
13

मैं एक बटन इस तरह की घोषणा कर दी:वेबफॉर्म_DoPostBackWithOptions() क्या करता है?

<asp:Button id=Send runat="server" EnableViewState="False" 
ToolTip="Email me this report" CssClass="Button" Text="Email me this report"> 
</asp:Button> 

लेकिन अगर मैं ब्राउज़र में निरीक्षण तत्व है, यह इस तरह से पता चलता है:

<input type="submit" class="Button" title="Email me this report" 
id="ctl03_Toolbar_Send" onclick="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(“ctl03$Toolbar$Send”,””, true, “”, “”;, false, false))" 
value="Email me this report" name="ctl03$Toolbar$Send"> 

मुझे आश्चर्य है कि जहां onclick घटना से आता है? यह क्या करता है?

अग्रिम में आपकी सहायता के लिए धन्यवाद।

+0

[वेबफॉर्म \ _PostBackOptions दस्तावेज़] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/502060/webform-postbackoptions- दस्तावेज) – Jamiec

+0

यह तर्क बताता है। लेकिन मुझे अभी भी पता नहीं है कि यह विधि कैसे जोड़ा जाता है। मैंने कोई ऑनक्लिक विशेषता सेट नहीं की है। – Joyin

+1

आपने 'type =" submit "निर्दिष्ट नहीं किया है, 'आईडी' पूरी तरह से अलग है और 'runat =" server "' वहां नहीं है। मुझे लगता है कि आपको केवल यह समझने की आवश्यकता है कि जब आप 'asp: बटन' टाइप करते हैं तो asp.net रनटाइम ब्राउज़र के व्याख्या के लिए HTML तत्व में बदल जाता है। – Jamiec

उत्तर

6

आप बटन सर्वर नियंत्रण के लिए PostBackUrl संपत्ति सेट करते हैं, तो इसका मतलब है यह पार पृष्ठ पोस्टिंग और सामान्य __DoPostBack के बजाय (तब asp.net ढांचा) "WebForm_DoPostBackWithOptions" कहते हैं। यदि आपके पास "PostBackUrl" चेक है संपत्ति इस बटन के लिए सेट करें।

<asp:Button id=Send runat="server" EnableViewState="False" PostBackUrl="~/Page2.aspx" 
ToolTip="Email me this report" CssClass="Button" Text="Email me this report"> 
</asp:Button> 

यदि आपके मामले में आपने "पोस्टबैक यूआरएल" सेट नहीं किया है, तो एएसपी.नेट फ्रेमवर्क भी बटन कंट्रोल के लिए डिफ़ॉल्ट रूप से इसे जोड़ता नहीं है, इसलिए इसका मतलब है कि ऑनक्लिक विशेषता मान को शायद अलग सेवर पक्ष का उपयोग करके एक और नियंत्रण होना चाहिए कोड -

PostBackOptions myPostBackOptions = new PostBackOptions(this); 
    myPostBackOptions.ActionUrl = "Page2.aspx"; 
    myPostBackOptions.AutoPostBack = false; 
    myPostBackOptions.RequiresJavaScriptProtocol = true; 
    myPostBackOptions.PerformValidation = true; 

    // Add the client-side script to the HyperLink1 control. 
    Button1.OnClientClick = Page.ClientScript.GetPostBackEventReference(myPostBackOptions); 
+1

मेरे मामले में, समस्या एक एएसपी से आई थी।नेट वैलिडेटर जिसका सक्षम क्लाइंटस्क्रिप्ट गुण "सत्य" पर सेट किया गया था; इसे "झूठी" में स्थापित करने से समस्या हल हो गई। –

0

निकालें "EnableViewState =" false "और यह डिफ़ॉल्ट PostBack का उपयोग करना चाहिए।

आप बटन सेट करते हैं राज्य की दुकान नहीं है, तो यह इस विकल्प के बजाय जो Page_Load जावास्क्रिप्ट घटना को अलग ढंग से पृष्ठ पर में तार कर रहा है का उपयोग करेगा ।

6

समझे वहाँ के रूप में "ASP.NET नियंत्रण" गाया HTML में ऐसी कोई बात नहीं है कि कि एक उपयोगकर्ता के अनुरोध के जवाब में वेब सर्वर आउटपुट। सभी एएसपी.NET नियंत्रण कुछ HTML को इस तरह से प्रस्तुत किया गया है जो सब कुछ सर्वर पर अपेक्षित काम करता है। बटन नियंत्रण कुछ जावास्क्रिप्ट को ट्रिगर करने के लिए "ऑनक्लिक" विशेषता को उत्सर्जित कर रहा है जिसके परिणाम स्वरूप फ़ॉर्म डेटा सर्वर पर वापस पोस्ट किया जा रहा है (माना जाता है कि किसी क्लाइंट साइड सत्यापनकर्ता इसे रोक नहीं सकते हैं)।

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

मूल रूप से, जब तक कि आप अपना स्वयं का एएसपी.NET सर्वर नियंत्रण नहीं बना रहे हैं, आपको भी चिंता करने की आवश्यकता नहीं है कि आईआईएस से अंतिम प्रतिक्रिया के रूप में क्या उत्सर्जित हो रहा है। क्या हो रहा है इसके बारे में परिचित होना अच्छा है (और मैं निश्चित रूप से यह नहीं कह रहा हूं कि आपको यह नहीं सीखना चाहिए कि सर्वर नियंत्रण कैसे करता है), लेकिन आपको प्रत्येक क्लाइंट-साइड कॉल और पैरामीटर से घनिष्ठ परिचित होने की आवश्यकता नहीं है शुरू करने के लिए एएसपी.नेट बना रहा है।

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