我见过一些代码,人们通过web控件的commandParameter属性传递参数。然后使用eventargs。
答案 0 :(得分:51)
如果您对不同的按钮使用相同的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;
}
}
答案 1 :(得分:6)
.NET中的各种Button类型控件都有OnCommand
个事件以及OnClick
个事件。使用OnCommand
事件时,您可以将其他参数应用于按钮,例如CommandName
和CommandArgument
。然后可以在CommandEventArgs
。
在您希望将相同方法分配给多个按钮并使用CommandName
和CommandArgument
参数指示单击该按钮将产生哪些功能的地方非常有用。
答案 2 :(得分:5)
EventArgs
类是基类。其他Web方法使用其他Event args。
e.g。一个LinkButton有一个带有默认EventArgs参数的OnClick事件,但它也有一个OnCommand事件,它带有一个CommandEventArgs : EventArgs
参数,该参数有一些额外的信息(即CommandName&amp; CommandArgument)。
event args基类就是一个占位符,所以所有的EventHandler都符合类似的签名。