Cuando crea un nuevo control de usuario web en Visual Studio, de manera predeterminada 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 desencadena antes del OnLoad
?Al crear un control web, debe anular OnLoad o implementar Page_Load
Respuesta
El método OnLoad
debe ser el lugar donde se produce el evento Load
. Personalmente siempre trato de manejar el evento a menos que necesite hacer un procesamiento adicional para plantear el evento.
Recomiendo manejar el evento en circunstancias normales.
Puede encontrar este article en el ciclo de vida útil de la página de Microsoft.
Aunque está heredando de UserControl
, creo que debe evitar los métodos protegidos si no tiene que hacerlo. El Page_Load
está allí para que le sea más fácil agregar el código que es específico para su UserControl
.
Solo reemplaza OnLoad
si necesita control absoluto sobre cuándo (/ if) se desencadena el evento Load
(que debería ser raro, IMO).
Es realmente solo una cuestión de elección. Para mí, parece extraño que un objeto adjunte un evento a sí mismo, especialmente cuando hay un método que puede anular.
Creo que el equipo de ASP.NET usó eventos porque ese era el modelo para Global.asa en ASP, y para reducir la barra para los desarrolladores que no entienden la herencia y sobreescriben los métodos virtuales.
La anulación del método requiere más conocimiento sobre el ciclo de vida de la página, pero no tiene nada "incorrecto".
Como puede ver arriba, en su mayoría se reduce a una elección personal SI esa elección se hace con conocimiento de causa. La mejor visión general rápida pero sólida que he visto está en http://weblogs.asp.net/infinitiesloop/archive/2008/03/24/onload-vs-page-load-vs-load-event.aspx
Creo que es lo mismo. En mi humilde opinión, con eventos, tiene un poco más de flexibilidad, porque puede suceder más de un oyente en su evento.
Creo que hay una diferencia potencialmente significativa en los dos métodos.
Lo que me refiero es la capacidad de tener control sobre la secuencia de ejecución.
Si está anulando, sabe cuándo tendrá lugar la carga de las clases base porque lo está llamando. Esto proporciona más control, pero probablemente sea algo malo, como muchos argumentarán.
Si utiliza evento, no tiene garantía en términos de orden de llamada. Esto te obliga a escribir el evento Load, que debería ser independiente de lo que las súper clases están haciendo durante la fase de carga. Creo que este sería el enfoque preferido y tal vez es por eso que el código autogenerado por VS es así.
Lea la sección llamada: "Eventos de página de enlace" en la página de MSDN titulada: "ASP.NET Web Modelo de servidor de control de eventos" (link to the page) Hay algunas afirmaciones útiles como estos:.
Una de las desventajas de la AutoEventWireup atributo es que se requiere que los controladores de eventos de la página tienen nombres específicos, predecibles Este limita su flexibilidad en la forma de nombrar los controladores 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 alto volumen de tráfico, el impacto en el rendimiento podría ser significativo.
(AutoEventWireup indicador se enciende tales métodos como Load)
- 1. Page_Load vs OnLoad
- 2. Diferencia entre page_load y onLoad
- 3. evento de control before Page_Load
- 4. Al menos un objeto debe implementar IComparable
- 5. VB.NET - ¿Se debe agregar un método Finalize al implementar IDisposable?
- 6. ASP.NET - Controles dinámicos creados en Page_Pre_init() o Page_Init() o Page_Load()
- 7. ¿Cómo se debe empaquetar/implementar un ESB?
- 8. Form_Load() 'event' o Override OnLoad()
- 9. Cuándo debe anular OnEvent en lugar de suscribirse al evento al heredar
- 10. "Diccionario verboso" en C#, 'anular nuevo' esto [] o implementar IDictionary
- 11. ¿Qué evento llamó primero? Página maestra Page_Load o página de contenido Page_Load
- 12. ¿Cómo implementar mejor Control de versiones para desarrollo web?
- 13. Al implementar IXmlSerializable, ¿cómo solo anular ReadXml o WriteXml y no ambos?
- 14. Problemas al implementar la aplicación web asp.net
- 15. Encontrar un control en un formulario web
- 16. sun.reflect.annotation.TypeNotPresentExceptionProxy error al implementar web-ear
- 17. HTML5 Audio onLoad
- 18. "Al menos un objeto debe implementar IComparable" para un INT? Por lo que sé, hace
- 19. Anular copiar o copiarWithZone: ¿o ambos?
- 20. Debe anular la variable val en scala
- 21. ¿Alguien puede explicar que debe anular?
- 22. Anular validación de rieles al crear objetos FactoryGirl
- 23. ¿Cómo se debe implementar el "bloqueo con doble control" en Delphi?
- 24. MVC Equivalente a Page_Load
- 25. XAML ComboBox SelectionChanged Fires OnLoad
- 26. Archivo no encontrado al crear un proyecto de implementación web
- 27. ¿Qué debe saber un desarrollador antes de crear un nuevo formato o idioma basado en XML?
- 28. Problema al anular malloc
- 29. C#: ¿Cómo se debe implementar ToString()?
- 30. Diferencia entre un control web y un control compuesto?
acordaron - Creo que es importante tener una buena comprensión de todo el ciclo de vida. –