¿Puedo averiguar qué eventos de control se activarán en una devolución de ASP?

StackOverflow https://stackoverflow.com/questions/243120

  •  04-07-2019
  •  | 
  •  

Pregunta

¿Es posible obtener una lista de los eventos de control que se activarán antes de que ocurran, digamos dentro del controlador Page_Load ?

Por ejemplo, si se hizo clic en un botón, ¿puedo resolverlo antes de llamar al controlador de eventos button_click ?

¿Fue útil?

Solución

Has elegido una pregunta realmente difícil ... la razón de esto es que hay varias formas en que los eventos se activarán.

1) __EVENTTARGET (como se mencionó anteriormente) 2) Si el nombre de tu botón es MyButt, verás " MyButt = " en la cadena de consulta. 3) Cuando cada control (como, por ejemplo, un TextBox) verifica la solicitud para ver si su valor en el ViewState es diferente al publicado, entonces " Text_Changed " va a disparar.

Pero, puedes usar # 1 y # 2 para revisar algunos lugares.

Otros consejos

Desafortunadamente, interrogar el valor __EVENTTARGET no funcionará. A menudo, ese valor estará vacío. El procesamiento de la devolución de datos toma algunas decisiones sobre qué eventos se deben generar en función de algo más que el valor objetivo del evento (si corresponde) al evaluar los valores del estado de control con respecto a los valores publicados por el formulario (por ejemplo, para un cuadro de texto) determina si eventos como TextChanged se deben activar .

Aparte de conectar realmente un controlador de eventos a todos los controles para los que desea capturar eventos, no creo que haya ninguna forma de determinarlo. Aunque podría ser posible hacer básicamente lo que hace el marco. Deberá hacerlo cuando se hayan creado los controles y se haya restaurado Viewstate pero antes de que se procesen los valores publicados. Puede comparar los valores de control actuales (desde viewstate) con los valores publicados, determinando esencialmente qué eventos se dispararán.

¿Cuál es tu objetivo con esto? Quizás haya una mejor solución.

Lo siguiente contiene la identificación mutilada de un botón cuando se hace clic.

Page.Request.Form["__EVENTTARGET"]

Aquí hay un ejemplo que creo que responde a su pregunta.

Otra forma sería simplemente establecer algunos puntos de interrupción al depurar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top