Pregunta

Cuando creas un nuevo control de usuario web en Visual Studio, por defecto agrega el evento Page_Load. ¿Cuál es la ventaja de usar esto en lugar de anular el evento base OnLoad en el control? ¿Es solo que el evento Page_Load se dispara antes de OnLoad ?

¿Fue útil?

Solución

El método OnLoad debe ser el lugar donde se produce el evento Load . Personalmente, siempre trato de manejar el evento a menos que tenga que hacer un procesamiento adicional para elevar el evento.

Recomiendo manejar el evento en sí mismo en circunstancias normales.

Otros consejos

Puede encontrar este artículo en el ciclo de vida de la página de Microsoft útil.

Como puede ver arriba, se trata principalmente de una elección personal SI esa elección se hace con conocimiento. El mejor resumen rápido pero sólido que he visto está en http://weblogs.asp.net/infinitiesloop/archive/2008/03/24/onload-vs-page-load-vs-load-event.aspx

En realidad es solo una cuestión de elección. A mí me parece extraño que un objeto se adjunte un evento a sí mismo, especialmente cuando hay un método que puedes anular.

Creo que el equipo de ASP.NET usó eventos porque ese era el modelo para Global.asa en ASP, y para reducir el nivel de los desarrolladores que no entienden la herencia y los métodos virtuales de anulación.

La anulación del método requiere más conocimiento sobre el ciclo de vida de la página, pero no hay nada " incorrecto " con ello.

Lea la sección llamada: " Eventos vinculantes de página " en la página de MSDN titulada: " Modelo de evento de control de servidor web ASP.NET " ( enlace a la página ) Hay algunas declaraciones útiles como estas:

  

Una desventaja del atributo AutoEventWireup es que requiere que los controladores de eventos de la página tengan nombres específicos y predecibles. Esto limita su flexibilidad en cómo nombra a los manejadores de eventos. Otra desventaja es que el rendimiento se ve afectado negativamente , porque ASP.NET busca métodos en tiempo de ejecución. Para un sitio web con altos volúmenes de tráfico, el impacto en el rendimiento podría ser significativo.

(la bandera AutoEventWireup activa métodos como el de carga de página)

A pesar de que está heredando de UserControl , creo que debería mantenerse alejado de anular los métodos protegidos si no tiene que hacerlo. El Page_Load está allí para facilitarle la adición del código específico de su UserControl .

Solo invalide OnLoad si necesita control absoluto sobre cuándo (/ si) se activa el evento Load (lo que debería ser raro, IMO).

Creo que es lo mismo. En mi humilde opinión, con eventos, tiene un poco más de flexibilidad, ¡porque puede pasar más de un oyente a su evento!

Creo que hay una diferencia potencialmente significativa en los dos métodos.

A lo que me refiero es a la capacidad de tener control sobre la secuencia de ejecución.

Si está anulando, sabrá cuándo se realizará la carga de clases base porque la está llamando. Esto proporciona más control, pero probablemente sea algo malo, ya que muchos argumentarán.

Si utiliza el evento, no tiene ninguna garantía en cuanto al orden de la llamada. Esto te obliga a escribir un evento de carga que debería ser ajeno a lo que hacen las súper clases durante la fase de carga. Creo que este sería el enfoque preferido y tal vez es por eso que el código generado automáticamente por VS es de esta manera.

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