2009-05-06 21 views
21

我已經看到一些代碼,其中人們通過web控件的commandParameter屬性傳遞參數,然後使用eventargs。asp.net:如何使用eventargs參數傳遞on button onclick?

+0

可能的重複[可以請大家向我解釋如何使用EventArgs?](http://stackoverflow.com/questions/1778952/can-someone-please-explain-to-me-in最通俗的術語how-to-use-eventargs) – Toadfish 2016-04-17 08:14:26

回答

50

如果您針對不同的按鈕具有相同的EventHandler方法,這會很有用。例如,假設您的標記看起來像這樣:

<asp:Button ID="button1" runat="server" CommandArgument="MyVal1" 
    CommandName="ThisBtnClick" OnClick="MyBtnHandler" /> 
<asp:Button ID="button2" runat="server" CommandArgument="MyVal2" 
    CommandName="ThatBtnClick" OnClick="MyBtnHandler" /> 

可以具有相同的事件處理程序按鈕並基於該CommandName的區分:

protected void MyBtnHandler(Object sender, EventArgs e) 
{ 
    Button btn = (Button)sender; 
      switch (btn.CommandName) 
      { 
       case "ThisBtnClick": 
        DoWhatever(btn.CommandArgument.ToString()); 
        break; 
       case "ThatBtnClick": 
        DoSomethingElse(btn.CommandArgument.ToString()); 
        break; 
      } 
} 

來源:aspnet-passing-parameters-in-button-click-handler

+0

鏈接不再工作 – madman2890 2013-03-13 20:08:56

5

.NET中的各種按鈕類型控件有一個OnCommand事件以及一個OnClick事件。當使用OnCommand事件時,您可以將其他參數應用於按鈕,如CommandNameCommandArgument。這些可以在CommandEventArgs中訪問。

在您想要爲多個按鈕分配相同方法的地方以及使用參數CommandNameCommandArgument指示單擊該按鈕的功能將生成哪些功能時,它非常有用。

5

EventArgs類是基類。其他Web方法使用其他事件參數。

例如LinkBut​​ton具有帶默認EventArgs參數的OnClick事件,但它也有一個OnCommand事件,該事件需要具有一些額外信息的CommandEventArgs : EventArgs參數(即CommandName & CommandArgument)。

事件參數基類只是作爲一個佔位符,所以所有的EventHandlers符合類似的簽名。