asp.net: ¿como usar eventargs para pasar parámetros al hacer clic en el botón?
-
06-07-2019 - |
Pregunta
He visto algún código en el que las personas pasan parámetros a través de la propiedad commandParameter del control web. Entonces, ¿para qué sirve eventargs?
Solución
Esto puede ser útil si tiene el mismo método EventHandler para diferentes botones. Ejemplo, digamos que su marcado se ve así:
<asp:Button ID="button1" runat="server" CommandArgument="MyVal1"
CommandName="ThisBtnClick" OnClick="MyBtnHandler" />
<asp:Button ID="button2" runat="server" CommandArgument="MyVal2"
CommandName="ThatBtnClick" OnClick="MyBtnHandler" />
Puede tener el mismo controlador de eventos para ambos botones y diferenciar según el Nombre del comando:
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;
}
}
Otros consejos
Varios controles de tipo de botón en .NET tienen un evento OnCommand
, así como un evento OnClick
. Cuando utilice el evento OnCommand
, tiene parámetros adicionales que puede aplicar al Botón, como CommandName
y CommandArgument
. Luego se puede acceder a ellos en el CommandEventArgs
.
Es útil en lugares donde desea asignar el mismo método a varios botones y usar los parámetros CommandName
y CommandArgument
para indicar qué funcionalidad producirá hacer clic en ese botón.
La clase EventArgs
es una clase base. Otros métodos web usan otros argumentos de eventos.
p. un LinkButton tiene un evento OnClick con un parámetro predeterminado EventArgs, pero también tiene un evento OnCommand que toma un parámetro CommandEventArgs: EventArgs
que tiene información adicional (es decir, CommandName & amp; CommandArgument).
La clase base de argumentos de evento está ahí como un marcador de posición para que todos los EventHandlers se ajusten a una firma similar.