Wenn ASP.NET MVC eine Seite ausführt, die Razor enthält, wird zuerst der Hauptteil ausgeführt, zB die RenderBody
-Methode, dann wird der Code für das Layout ausgeführt und zusammen gewoben.
Dies ist in diesem Blogeintrag
System.Web.Mvc.RazorView.RenderView () System.Web.WebPages.WebPageBase.ExecutePageHierarchy () // nicht virtuell Version System.Web.WebPages.WebPageBase.PushContext ()
System.Web.WebPages.WebPageBase.ExecutePageHierarchy () // virtuell version this.Execute () // Generierter Code aus unserer Ansicht
System.Web.WebPages.WebPageBase.PopContext
RenderSurrounding (virtualPath, Körper); // Render-Layout, das ist Ähnlich wie beim Renderprozess von View können Sie im Wesentlichen verschachtelt sein Layout VerifyRenderdBodyOrSertions ();
Ich möchte meinen Ansichten und meinem Layout Code hinzufügen, der die tatsächliche logische Position auf der Seite nachzeichnet.
Gibt es eine Methode, mit der ich eine Methode zum Ausführen von kurz vor RenderSurrounding und anschließen kann, nachdem RenderBody
die Ausführung beendet hat?
Sie können die Methode ExecutePageHierarchy
auf der Seite selbst überschreiben, indem Sie bei einer WebViewPage
-Implementierung wie folgt einen anderen Basistyp für Ihre Seiten erstellen:
Sie erhalten die Ausgabe direkt vor und nach dem Inhalt der eigentlichen Seite (und damit innerhalb des Layouts). Ich bin mir nicht sicher, ob das das ist, was du suchst, versuchst du nur die Skripte bei </body>
zu schreiben, stelle ich mir vor?
Die Hauptsache ist, diese Art eines Basistyps nur für den Haupt-.cshtml zu verwenden (keine Teiltafeln oder im Layout), es werden diese Output.Write
s um die RenderBody
-Ausgabe des Layouts gerendert (naja, wirklich , gerade drinnen).
Sie können den Basistyp pro Verzeichnis in web.config
festlegen.
Tags und Links asp.net-mvc-3 c# razor