Quando ASP.NET MVC esegue una pagina contenente Razor, esegue prima il corpo, ad esempio il metodo RenderBody
, quindi esegue il codice per il layout e lo intreccia.Esistono hook in ASP.NET MVC prima dell'esecuzione del layout e del rendering del corpo postale?
questo è documentato in questo blog post:
System.Web.Mvc.RazorView.RenderView() System.Web.WebPages.WebPageBase.ExecutePageHierarchy() // non virtuale versione System.Web. WebPages.WebPageBase.PushContext()
System.Web.WebPages.WebPageBase.ExecutePageHierarchy() // virtuale versione this.Execute() // codice generato dalla nostra vista
System.Web.WebPages.WebPageBase.PopContext
RenderSurrounding (virtualPath, body); // Render Layout, che è simile al processo di rendering di View, in pratica puoi avere nidificato Layout VerifyRenderdBodyOrSetions();
Voglio aggiungere il codice per le mie opinioni e il layout che ricalca l'attuale posizione logica nella pagina.
C'è un modo per collegare un metodo per eseguire poco prima RenderSurrounding e subito dopoRenderBody
termina l'esecuzione?
'RenderBody' viene richiamato dal layout (almeno nei progetti MVC coppia su cui ho lavorato). Potresti racchiudere 'RenderSurrounding' in un helper (se non lo è già) e aggiungerlo prima e dopo la chiamata a' RenderBody' nel layout. –
@ M.Babcock idealmente sto cercando un gancio nel framework che non comporta modifiche al layout –
Ma la tua domanda dice: * Voglio aggiungere codice alle mie viste e layout che traccia la posizione logica effettiva nella pagina. stai cercando di cambiare il layout comunque? –