2011-08-25 78 views
19

我正在使用ASP.Net創建應用程序,其中我在aspx頁面上有一個HTML按鈕。從HTML按鈕控件調用服務器端事件

<input type="submit" id="btnSubmit" runat="server" 
    style="background-image:url(App_Themes/default/Images/quiz_class/btn_submit.jpg); 
    width:80px; height:29px;" onserverclick="btnSubmit_ServerClick" /> 

但是,當我點擊按鈕,然後它不調用aspx.cs頁面上的btnSubmit_ServerClick事件。

我不想使用asp控制按鈕。

請幫助..

+0

的sooo ...這是3年結束。你有沒有得到這個想法?接受答案! (即使你必須先創建它) – Cullub

回答

2

做到這一點最簡單的方法是重寫RaisePostBackEvent方法。

<input type="button" ID="btnRaisePostBack" runat="server" onclick="raisePostBack();" ... /> 

而且在你的JavaScript:

raisePostBack = function(){ 
    __doPostBack("<%=btnRaisePostBack.ClientID%>", ""); 
} 

並在代碼:

protected override void RaisePostBackEvent(IPostBackEventHandler source, string eventArgument) 
{ 
    //call the RaisePostBack event 
    base.RaisePostBackEvent(source, eventArgument); 

    if (source == btnRaisePostBack) 
    { 
     //do some logic 
    } 
} 
+0

我試過這段代碼,回發被觸發,但'protected override void RaisePostBackEvent'函數沒有被執行。如何解決這個問題? – Vijayaraghavan

32

如果你是通過指定runat="server"輸入按鈕轉換爲服務器端控件確定,您正在使用asp.net,選項可能會使用HtmlButton.OnServerClick屬性。

<input id="foo "runat="server" type="button" onserverclick="foo_OnClick" /> 

這應該工作,並在您的服務器端代碼中調用foo_OnClick。 另請注意,根據以上鍊接的Microsoft文檔,您還應該能夠使用HTML 4.0標記。

+0

這絕對是它可以正常工作的答案 –

+0

你如何聲明'foo_OnClick'? – Cullub

+0

明白了:''您的C#東西必須在這裏。 – Cullub

4

在你的aspx頁面定義與通常的嫌疑人的HTML Button元素:RUNAT,類別,標題等

如果該元素是一個數據綁定控件的部分(即:網格視圖等),你可能希望使用CommandName和可能的CommandArgument作爲屬性。添加您的按鈕的內容和結束標記。

<button id="cmdAction" 
    runat="server" onserverclick="cmdAction_Click()" 
    class="Button Styles" 
    title="Does something on the server" 
    <!-- for databound controls --> 
    CommandName="cmdname"> 
    CommandArgument="args..." 
    > 
    <!-- content --> 
    <span class="ui-icon ..."></span> 
    <span class="push">Click Me</span> 
</button> 

在頁面後面的代碼中,元素將調用將被定義爲元素的ID_Click事件函數的處理函數。

protected void cmdAction_Click(object sender, EventArgs e) 
{ 
: do something. 
} 

還有其他的解決方案,如在使用自定義的控制,等等。此外 請注意,我用這個活在VS2K8項目。

希望這有助於。 享受!

0

只是用這個在您的按鈕單擊事件

protected void btnAddButton_Click(object sender, EventArgs e) 
{ 
    ... save data routin 
    Response.Redirect(Request.Url.AbsoluteUri); 
} 
相關問題