2011-11-21 48 views
0

任何想法如何檢查asp.net web應用程序中的哪個控件引發了回傳?確定哪個控件引發了回發

我有一些按鈕,並且想要在Page_Load方法中執行不同的任務,具體取決於點擊哪個按鈕。

+0

爲什麼不在他們適當的點擊事件處理程序中執行它們? – V4Vendetta

+0

@HenkHolterman謝謝 –

回答

1

要檢查哪個控件導致回發,請使用Request.Form [「__ EVENTTARGET」]。這應該返回導致回發的控件的唯一ID。

編輯 對於這個工作,你將不得不將按鈕設置爲false,這導致它使用ASP淨回傳機制

UseSubmitBehavior財產使用UseSubmitBehavior屬性指定是否Button控件使用客戶端瀏覽器的提交機制或ASP.NET回發機制。默認情況下,此屬性的值爲true,導致Button控件使用瀏覽器的提交機制。如果指定false,則ASP.NET頁面框架將客戶端腳本添加到頁面以將表單發佈到服務器。

當UseSubmitBehavior屬性爲false時,控件開發人員可以使用GetPostBackEventReference方法返回Button的客戶端回發事件。由GetPostBackEventReference方法返回的字符串包含客戶端函數調用的文本,並可以插入到客戶端事件處理程序中。

From MSDN

+0

我認爲這不適用於點擊按鈕 – V4Vendetta

+0

@ V4Vendetta不是嗎? –

+1

@ shaun.breach很好,除非你將UseSubmitBehavior設置爲false,否則你可以查看Henk鏈接中的相同內容 – V4Vendetta

1

您可以從requist的「__EVENTTARGET的價值得到回發控件ID。 params

看看下面的article

protected void Button1_Click(object sender, EventArgs e) 
{ 
    ((System.Web.UI.WebControls.Button)sender).ID 
} 

EventArgs的參數包含可用於識別的命令名稱:

0
的按鈕,它包含了對按鈕的引用,讓你可以在控件ID事件的方法處理

好你需要做什麼:

if (e.CommandName == "AddToCart") 
{ 
    Do something 
} 
+0

你確定'EventArgs e'有'e.CommandName'嗎? – V4Vendetta

相關問題