Gibt es eine Möglichkeit zur Verwendung so etwas wie in Teilansichten, die mit Render gemacht werden?
-
12-10-2019 - |
Frage
In meiner ASP.NET MVC 2 Web-Anwendung, ich verwende RenderAction
HTML angezeigt werden in dem, was ich die „Flash-Mitteilung“ -Bereich der Website aufrufen. Mit dem Flash-Bereich, meine ich einen markierten Bereich in der Nähe der Spitze, die eine Mitteilung über die vorherige Anforderung, wie Hello <%: Html.DisplayTextFor(m => m.Username) %>
enthält, wenn sich der Benutzer anmeldet.
Eine Flash-Mitteilung, dass ich arbeite ist ein wenig komplexer. Es braucht einen Block von Javascript-Code auf die Antwort hinzufügen, aber ich mag das script
Element vor dem Ende </body>
Tag legen wie in dem Buch High Performance JavaScript .
In einer normalen Ansicht, verwende ich <asp:Content ContentPlaceHolderID="FlashScriptElements" runat="server"><script> ... </script></asp:Content>
an Ort script
Elemente am unteren Rand der Seite. Leider, wenn ich das gleiche in einer Teilansicht versuchen, mit RenderAction
gemacht wird, ich die Parser-Fehler erhalten „Content Kontrollen haben Top-Level-Kontrollen in einer Content-Seite oder eine verschachtelte Masterseite sein, dass Referenzen eine Masterseite“.
Gibt es so etwas wie <asp:Content>
, dass ich in Teilansichten verwenden kann, welche den Inhalt in die entsprechenden Stelle der Masterseite eingefügt werden?
Lösung
<asp:Content>
nicht mit Render unterstützt, da Render entspricht Code mit, dass Ihre Kind Aktion Methode ausführen würde, die Antwort gesammelt und dann in der übergeordneten Methode nach Ansicht eingefügt werden.
Was könnten Sie tun, ist die Skripte hinzufügen, dass Sie irgendwo müssen Sie die HttpContextBase.Items
Sammlung. Dann in der Masterseite kurz vor dem Ende des Dokuments der registrierten Scripts abrufen und ausdrucken.