asp.net: как использовать eventargs для передачи параметров по кнопке при нажатии?
-
06-07-2019 - |
Вопрос
Я видел некоторый код, в котором люди передают параметр через свойство CommandParameter веб-контроля. Тогда для чего используются eventargs.
Решение
Это может быть полезно, если у вас один и тот же метод 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;
}
}
Другие советы
Различные элементы управления типа кнопок в .NET имеют событие OnCommand
, а также событие OnClick
. При использовании события OnCommand
у вас есть дополнительные параметры, которые вы можете применить к кнопке, такие как CommandName
и CommandArgument
. Затем они могут быть доступны в CommandEventArgs
.
Это полезно в тех местах, где вы хотите назначить один и тот же метод нескольким кнопкам и использовать параметры CommandName
и CommandArgument
, чтобы указать, какую функциональность будет вызывать нажатие этой кнопки. р>
А EventArgs
класс является базовым классом.Другие веб-методы используют другие аргументы Event.
напримерLinkButton имеет событие OnClick с параметром EventArgs по умолчанию, но также имеет событие OnCommand, которое принимает CommandEventArgs : EventArgs
параметр, который содержит дополнительную информацию (а именно CommandName и CommandArgument).
Базовый класс аргументов события используется только в качестве заполнителя, чтобы все EventHandlers соответствовали одинаковой сигнатуре.