Подтвердить что ты не робот

Asp.net: как использовать eventargs для передачи параметров при нажатии кнопки onclick?

Я видел некоторый код, в котором люди передают параметр через свойство CommandParameter веб-управления. Затем используется использование eventargs.

4b9b3361

Ответ 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;
           }
}

Источник: aspnet-passing-parameters-in-button-click-handler

Ответ 2

Различные элементы управления Button в .NET имеют событие OnCommand, а также событие OnClick. При использовании события OnCommand у вас есть дополнительные параметры, которые вы можете применить к кнопке, например, CommandName и CommandArgument. Затем их можно получить в CommandEventArgs.

Это полезно в тех местах, где вы хотите назначить один и тот же метод нескольким кнопкам и использовать параметры CommandName и CommandArgument, чтобы указать, какая функциональность будет нажата на эту кнопку.

Ответ 3

Класс EventArgs - это базовый класс. Другие веб-методы используют другие аргументы Event.

например. LinkButton имеет событие OnClick с параметром EventArgs по умолчанию, но также имеет событие OnCommand, которое принимает параметр CommandEventArgs : EventArgs, который содержит некоторую дополнительную информацию (а именно CommandName и CommandArgument).

Базовый класс args события находится там как владелец места, так что все EventHandlers соответствуют подобной сигнатуре.