2009-11-16 98 views
1

我有一個按鈕:按鈕沒有拿起事件背後的c#代碼,我做錯了什麼?

<button type="submit" class="contact" onclick="click"> 

和我身後的功能C#代碼:

protected void click(object sender, EventArgs e) 
{ 
    contact_label.Text = "tester"; 
} 

,並有我的網頁上的標籤:

<asp:Label id="contact_label"... 

麻煩的是,當我點擊按鈕'click'功能沒有被調用,爲什麼不呢?我該如何補救?

回答

6

你需要中用runat = server的

試試這個:

<asp:button id="button" runat="server" onclick="click" cssclass="contact"> 

如果你不想使用ASP:按鈕

<button id="button" runat="server" OnServerClick="click" > 

下面是一篇文章,解釋它: http://ondotnet.com/pub/a/dotnet/2001/06/21/webforms.html?page=2

如果您不想使用服務器端按鈕完全可以在page_load事件中檢查哪個按鈕執行了提交操作(通過request.form)。你不會有一個對象來調用事件處理程序,但是你可以用另一個方法中的代碼來執行相同的操作。

+0

啊,你編輯了你的a。同時,好!你很快;-) – Abel 2009-11-17 00:03:22

+0

謝謝,我去了OnServerClick事件。爲什麼我使用按鈕而不是asp:按鈕的原因是由於風格問題,因爲我正在使用圖像。它不是最好的答案,但它是'客戶要求'的一部分,所以我正在與此相關。謝謝。 – flavour404 2009-11-17 00:37:48

+0

這就是他們發明'asp:ImageButton' for ... – Abel 2009-11-17 00:46:23

1

你需要多一點然後就runat="server",您需要:

  1. 選擇使用ASP.NET ASP:Button類(而不是標準的HTML)
  2. 添加RUNAT = 「服務器」
  3. 刪除不相關的HTML代碼:

這會自動也是一個提交按鈕:

<asp:Button 
    CssClass="contact" 
    runat="server" 
    OnClick="click" 
    Text="Hello World" /> 

C#現在將稱爲:

protected void click(object sender, EventArgs e) 
{ 
    contact_label.Text = "tester"; 
} 

編輯:凱文表明如何能爲默認的HTML控件來完成,還解釋瞭如何創建通過使用switch語句額外的「事件」的Page_Load中。我最初誤解了這個問題,我會爲想要使用ASP.NET控件的人留下我的答案。

+0

這就是問題所在,我不想使用asp:button,有沒有辦法在沒有它的情況下調用c#代碼? – flavour404 2009-11-17 00:08:08

+0

爲什麼你不想使用asp:button?你需要一個服務器端事件處理程序。這需要服務器端控制。如Kevin所示,您可以使用「OnServerClick」(顯然)。雖然我沒有看到「爲什麼」,你會想要做那樣的事情。 – Abel 2009-11-17 00:17:21

+0

其風格方法。 – flavour404 2009-11-17 00:34:00