23

我看过一些代码,其中人们通过 web 控件的 commandParameter 属性传递参数。那么 eventargs 的用途是什么。

4

3 回答 3

53

如果您对不同的按钮使用相同的 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

于 2009-05-06T15:29:11.287 回答
6

.NET 中的各种 Button 类型控件都有一个OnCommand事件和一个OnClick事件。使用OnCommand事件时,您可以将其他参数应用于 Button,例如CommandNameCommandArgument。然后可以在CommandEventArgs.

CommandName在您希望将相同的方法分配给多个按钮并使用和CommandArgument参数指示单击该按钮将产生什么功能的地方时,它很有用。

于 2009-05-06T15:28:59.837 回答
5

该类EventArgs是一个基类。其他 Web 方法使用其他事件参数。

例如,LinkBut​​ton 有一个带有默认 EventArgs 参数的 OnClick 事件,但它也有一个 OnCommand 事件,该事件采用CommandEventArgs : EventArgs具有一些额外信息的参数(即 CommandName 和 CommandArgument)。

事件 args 基类只是作为占位符存在,因此所有 EventHandler 都符合类似的签名。

于 2009-05-06T15:29:50.070 回答