Tuve una entrevista hace una semana y una de las preguntas fue ¿cuál era la diferencia entre OnInit y Onload en ASP.NET? No tenía ni idea y no encontré ninguna respuesta simple en la red, así que ¿alguien puede explicar de manera breve y simple cuál es la diferencia entre ambos? (Lo que encontré fue que la diferencia era algo en el ciclo de vida).Diferencia OnInit y OnLoad en ASP.NET?
Respuesta
Necesita leer en el ASP.NET page lifecycle.
OnInit
ocurre antes en el ciclo de vida: aún no se han realizado cambios en el estado de la vista y no se ha activado el seguimiento de la misma.
Ok eso dice más, pero No entiendo por qué debería hacer algo antes de que se carguen los cambios en el estado de la vista. ¿Puede dar un ejemplo? Eso me haría más sencillo comprender por qué es útil. – dg90
@daageu - Si necesita inicializar un control , deberías hacer eso aquí. Este es también el mejor momento para recrear los controles dinámicos, de lo contrario los cambios en su viewstate no se reflejarán automáticamente. – Oded
Ah, por supuesto, ahora estamos hablando;) Gracias por la información. – dg90
Page_Init
se levanta antes de Page_Load
. Page_Init
es un buen lugar para el código que desea ejecutar antes de seguir procesando, como adjuntar controladores de eventos al evento de carga.
es mejor no acceder a los controles en este caso porque no se garantiza que se hayan creado.
Page_Load es un buen lugar para almacenar el código donde inicializa los valores y los controles específicos de la página porque sabe que en este momento los controles existen y están disponibles.
Va a colocar un código mucho más en Page_Load de lo que será en Page_Init para la mayoría de sus aplicaciones
Ambos métodos de Control clase son invocados por ASP.NET. El método OnInit()
plantea el evento Init
y el método OnLoad()
genera el evento Load
.
OnInit
(el evento Init
) se produce después de que se hayan inicializado todos los controles, pero antes de que se habilite el seguimiento ViewState
. Se denomina ascendente (se llama a los eventos Init
para controles secundarios antes del evento Init
de su padre).
Init
es un buen lugar para agregar controles dinámicos a su página o control de usuario (aunque no es un requisito). Si puede, entonces esos controles tendrán su ViewState
restaurado automáticamente durante la devolución de datos (ver a continuación). Sin embargo, es un lugar arriesgado para establecer propiedades de control, ya que pueden sobrescribirse con el ViewState
entrante. Init
es el lugar correcto para establecer ViewStateUserKey
, que puede ayudar a proteger su sitio de los ataques con un solo clic. También puede llamar al RegisterRequiresControlState()
desde allí, si está utilizando el estado de control.
Justo después del evento Init
, cada control permite ViewState
de seguimiento, por lo que cualquier cambio en las propiedades de un control después de que se reflejará en ViewState
.
Los siguientes eventos en el nivel de página son InitComplete
y PreLoad
, ninguno de los cuales está visible en el nivel de control. Durante una devolución de datos, el ViewState
entrante se restaura en controles entre InitComplete
y PreLoad
.
Luego viene el evento Load
, que ocurre tanto para los controles como para la página. Load
se llama primero al nivel primario y luego a cualquier control secundario. Una página maestra se comporta como un control en una página con respecto al orden de eventos.
¡Perfecto gracias! Encontré algo de información sobre el ciclo de vida de Init a Onload, pero mucho más difícil de describir que esto. – dg90
- 1. Diferencia entre page_load y onLoad
- 2. Uso del evento OnInit en asp.net
- 3. diferencia entre pageLoad, onload y $ (document) ready()
- 4. JavaScript: ¿En qué se diferencia "function onload() {}" de "onload = function() {}"?
- 5. Diferencia entre el método OnLoad y el evento Load?
- 6. Page_Init vs OnInit
- 7. Diferencia entre asp y asp.net
- 8. Diferencia entre ScriptManager y ScriptManagerProxy en asp.net
- 9. jQuery run function onload y key up
- 10. Form_Load() 'event' o Override OnLoad()
- 11. Diferencia entre ASP.Net, C# .Net y VB.Net?
- 12. Diferencia entre ASP.NET MVC 1 y 3
- 13. ¿Cuál es la diferencia entre ASP.NET y ASP.NET MVC?
- 14. Diferencia entre ASP.Net 3.5 y 4.0
- 15. ¿Hay alguna diferencia entre .NET y ASP.NET
- 16. ¿Diferencia entre ASP.NET MVC 3 y 4?
- 17. Diferencia entre ASP.NET y .NET framework versión
- 18. jQuery función onload
- 19. Viewstate and controls en ASP.NET
- 20. Page_Load vs OnLoad
- 21. HTML5 Audio onLoad
- 22. window.onload vs <body onload = "" />
- 23. ¿Por qué el orden OnLoad/CreateChildControls cambia en la devolución de datos?
- 24. ¿Cuál es la diferencia entre Session.Abandon() y Session.Clear() en ASP.Net?
- 25. Diferencia entre ApiController y Controller en ASP.NET MVC
- 26. Diferencia entre '(comillas simples) y "(comillas dobles) en ASP.NET 4
- 27. Diferencia entre HttpContext.Current y Controller.Context en MVC ASP.NET
- 28. ¿Cuál es la diferencia entre HttpContext.Current.User y Thread.CurrentPrincipal en asp.net?
- 29. En ASP.Net, ¿cuál es la diferencia entre <% = y <% #
- 30. iframe onload en IE7/8 con Javascript
No se sienta tan mal. Regularmente realizo entrevistas para desarrolladores "senior" de ASP.NET, y solo muy pocos entienden el ciclo de vida de la página. – RickNZ
Sí, lo sé (y acabo de comenzar mi "carrera" hace 5 meses) pero tenía algo sobre esta pregunta que debería haber sabido la respuesta. Y después de la entrevista realmente quería entender la diferencia entre ambos pero no pude encontrar una respuesta simple en la red, hasta ahora;) ty – dg90
Página/MasterPage/Control lifecycle me hace llorar :( –