Cuando ASP.NET MVC ejecuta una página que contiene Razor, primero ejecutará el cuerpo, por ejemplo, el método RenderBody
, luego ejecutará el código para el diseño y lo entrelazará.¿Hay anzuelos en ASP.NET MVC antes de la ejecución del diseño y procesamiento de cuerpo posterior?
Esto se documenta en este blog post:
System.Web.Mvc.RazorView.RenderView() System.Web.WebPages.WebPageBase.ExecutePageHierarchy() // no versión virtual System.Web. WebPages.WebPageBase.PushContext()
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() // virtuales versión this.Execute() // El código generado de nuestra vista
System.Web.WebPages.WebPageBase.PopContext
RenderSurrounding (virtualPath, cuerpo); // Render Layout, que es similar al proceso de renderización de View, esencialmente puede haber anidado Layout VerifyRenderdBodyOrSetions();
Quiero añadir código para mis puntos de vista y el diseño que traza la posición lógica real en la página.
¿Hay alguna manera de conectar un método para ejecutar justo antes de RenderSurrounding y justo después deRenderBody
termina de ejecutar?
'RenderBody' es invocado por el diseño (al menos en los proyectos de pareja MVC en los que he trabajado). Posiblemente pueda envolver 'RenderSurrounding' en un helper (si no es ya uno) y agregarlo antes y después de la llamada a' RenderBody' en el diseño. –
@ M.Babcock idealmente estoy buscando un gancho en el marco que no implica cambios de diseño –
Pero su pregunta dice: * Quiero agregar código a mis vistas y el diseño que rastrea la posición lógica real en la página. * Así que aren ¿Estás buscando cambiar el diseño de todos modos? –