2009-05-06 24 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符合类似的签名。