Я видел некоторый код, в котором люди передают параметр через свойство CommandParameter веб-управления. Затем используется использование eventargs.
Asp.net: как использовать eventargs для передачи параметров при нажатии кнопки onclick?
Ответ 1
Это может быть полезно, если у вас есть один и тот же метод 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;
}
}
Ответ 2
Различные элементы управления Button в .NET имеют событие OnCommand
, а также событие OnClick
. При использовании события OnCommand
у вас есть дополнительные параметры, которые вы можете применить к кнопке, например, CommandName
и CommandArgument
. Затем их можно получить в CommandEventArgs
.
Это полезно в тех местах, где вы хотите назначить один и тот же метод нескольким кнопкам и использовать параметры CommandName
и CommandArgument
, чтобы указать, какая функциональность будет нажата на эту кнопку.
Ответ 3
Класс EventArgs
- это базовый класс. Другие веб-методы используют другие аргументы Event.
например. LinkButton имеет событие OnClick с параметром EventArgs по умолчанию, но также имеет событие OnCommand, которое принимает параметр CommandEventArgs : EventArgs
, который содержит некоторую дополнительную информацию (а именно CommandName и CommandArgument).
Базовый класс args события находится там как владелец места, так что все EventHandlers соответствуют подобной сигнатуре.