2010-03-19 19 views
9

मैं पूछना चाहूंगा कि मैं एक HTML एंकर (एक तत्व) या यहां तक ​​कि किसी भी ऑब्जेक्ट को पोस्टबैक करने या सर्वर साइड विधि निष्पादित करने के लिए कैसे कर सकता हूं? मैं एक कस्टम बटन बनाना चाहता हूं (कुछ डिवाइसेज के साथ कुछ कस्टम उन्हें लपेटने के लिए लपेटा गया है) और मैं एएसपी.NET लिंकबटन की तरह दिखने के लिए ऑनक्लिक को कार्यान्वित करना चाहता हूं?एचटीएमएल लिंक (एंकर) को लिंकबटन की तरह एक पोस्टबैक कैसे देना है?

<a href="#" onclick="RunServerSideMethod()">Just a simple link button</a> 
+2

brrrr, मैं वापस कभी नहीं ASP.NET वेबफ़ॉर्म में जाना चाहते हैं, जय हो MVC :) – Ropstah

+1

यकीन है कि MVC नए और अच्छा समाधान है, लेकिन अभी भी WebForms (पहले MVC जारी) –

उत्तर

9

डिफ़ॉल्ट रूप से, नियंत्रण __doPostBack का उपयोग सर्वर से पोस्टबैक करना है:

इस अजाक्स ट्यूटोरियल आज़माएं। __doPostBack नियंत्रण के अद्वितीय आईडी (या HTML में, HTML तत्व की नाम संपत्ति) लेता है। दूसरा पैरामीटर आग के आदेश का नाम है। ,

<a id="someclientid" name="someuniqueid" href="javascript:void(0);" onclick="__doPostBack('someuniqueid', '');">val</a> 

अपने कस्टम बटन में IPostBackEventHandler जोड़ें, और इस __doPostBack बयान आप के लिए स्वचालित रूप से अपने RaisePostBackEvent विधि सक्रिय होगा:

तो एक कस्टम बटन के लिए, उत्पादन धारा को प्रस्तुत करना।

+0

अच्छा है, लेकिन जहां से मैं चलाने के लिए विधि का नाम परिभाषित कर सकता हूं? या यह 'IPostBackEventHandler' कार्यान्वयन में होना चाहिए? –

+0

आप मैन्युअल रूप से उस विधि को कॉल करते हैं जिसे आप चाहते हैं, या गतिशील रूप से इसे कॉल करने के लिए प्रतिबिंब का उपयोग करें। आप जो करना चाहते हैं उसे करने के लिए कार्यान्वयन पर आपका पूरा नियंत्रण है। –

14

की तरह एक सर्वर साइड एचटीएमएल नियंत्रण, HtmlAnchor जो एक सर्वर साइड एक टैग है का उपयोग करें।

<asp:HtmlAnchor runat="server" onclick="RunServerSideMethod">Just a simple link</asp:HtmlAnchor> 
+0

यह हो जाता है पुराने प्रोजेक्ट के कम से कम प्रयोग किया जाता है, "HtmlAnchor ज्ञात तत्व नहीं है" –

0

) ASP.NET, RunServerSideMethod (पर निर्भर एक जावास्क्रिप्ट समारोह सर्वर के लिए एक अनुरोध भेजने के लिए अजाक्स का उपयोग करता है होना चाहिए बिना ऐसा करने के लिए। http://www.w3schools.com/ajax/

1
One workaround could be : 

invoke dummyButton click in client side event of anchor tag - which will call server side event of this dummy Button by default. so if u place ur server side code in this dummyButton server event - calling anchor tag client side event would invoke this server side dummy button event. 

Code: 

<a id="ancLink" href="javascript:void(0);" >back</a> 

<asp:Button ID="dummyRefresh" runat="server" OnClick="BtnRefreshOnclick" style="display:none"/> 

Javascript: 

ancLink.live("click", function() { 
     callDummyButtonServerEvent(); 
    }); 

function callDummyButtonServerEvent() { 

    $('input[id$=dummyRefresh]').click(); 

} 

Hope this helps. 

Vardhini 
5

बस एंकर टैग -> रनैट = "सर्वर" पर सर्वर क्लिक करें = "आपका फ़ंक्शन नाम", यह आपकी समस्या हल करता है।

+0

यही वह है जो मैं – Johnn5er

+0

का उपयोग करता हूं यह मेरी समस्या हल करता है। ऐसा लगता है कि एएसपीनेट के मेरे संस्करण में एचटीएमएलएन्चर नहीं है (या मुझे नहीं पता कि इसे कैसे आयात किया जाए) और एक कस्टम बटन मेरी राय में थोड़ा अधिक है। –

0

आप वास्तविक HTML कोड के भीतर से एएसपी कोड का भी उपयोग कर सकते हैं।

<a id="someclientid" name="someuniqueid" href="javascript:void(0);" onclick="<% YourASPMethod(); %>">val</a> 

यह aspx.cs फ़ाइल में YourASPMethod() नामक एक विधि निष्पादित करेगा।