asp.net: как использовать eventargs для передачи параметров по нажатию кнопки? - PullRequest
22 голосов
/ 06 мая 2009

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

Ответы [ 3 ]

51 голосов
/ 06 мая 2009

Это может быть полезно, если у вас один и тот же метод 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-параметры передачи в кнопке-клик-обработчик

6 голосов
/ 06 мая 2009

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

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

5 голосов
/ 06 мая 2009

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

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

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

...