|
|
Veröffentlicht am 19.07.2015 23:37:53
|
|
|

1. RenderBody In der Razor-Engine gibt es keine "Masterseite", stattdessen wird eine Seite namens "layout" (_Layout.cshtml) im Ordner der geteilten Ansicht platziert. Auf dieser Seite sehen Sie eine Aussage im Tag: @RenderBody() Tatsächlich funktioniert es ähnlich wie die Serversteuerung auf der Masterseite: Wenn eine Ansicht auf Basis dieser Layoutseite erstellt wird, werden die Inhalte der Ansicht mit der Layoutseite zusammengeführt und der Inhalt der neu erstellten Ansicht zwischen den Labels mit der @RenderBody()-Methode der Layoutseite gerendert. Diese Methode benötigt keine Parameter und kann nur einmal erscheinen. 2. RenderPage Wie man schon am Namen erraten kann, besteht diese Methode darin, eine Seite zu präsentieren. Zum Beispiel kann der feste Header auf einer Webseite separat in einer Shared-View-Datei eingelegt und dann auf dieser Methode auf der Layout-Seite wie folgt aufgerufen werden: @RenderPage("~/Views/Shared/_Header.cshtml") Mit Parametern @RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="you") Rufen Sie die Seite auf, um die Parameter zu erhalten: Lassen Sie die Parameter von RenderPage() übergeben. @PageData["param"] 3. Rendersektion Die Layout-Seite hat auch das Konzept eines Abschnitts, das heißt, wenn ein Abschnitt in einer Ansichtsvorlage definiert ist, kann er separat und folgendermaßen präsentiert werden: @RenderPage("~/Views/Shared/_Header.cshtml") @RenderBody()
//模板里添加了一个节 @RenderSection ("Kopf") Natürlich sollte auch der Abschnitt in der Ansicht definiert werden, sonst tritt eine Ausnahme ein: @section Kopf{
//do
} Um Ausnahmen aufgrund fehlender Abschnitte zu vermeiden, kannst du RenderSection() ein zweites Argument geben: @RenderSection("SubMenu", falsch) oder @if (IsSectionDefined("SubMenu"))
{ @RenderSection("SubMenu", falsch)
} oder
{ <p>Untermenü-Abschnitt ist nicht definiert!</p>
}
4.@Html.Partial Partial erstellt jedes Mal eine eigene TextWriter-Instanz und speichert den Inhalt im Speicher. Schließlich senden Sie alle Schreibausgaben an ein MvcString-Objekt Meistens verwenden wir @{ html.RenderPartial("details"); statt @Html. Teilweise Der Unterschied zwischen RenderPage() und RenderPartial(). RenderPage()-Aufrufe können es nur verwenden, um übergangene Daten zu übergeben. RenderPartial() kann Viewdata, Model und andere Daten verwenden. Der Unterschied zwischen Html.RenderPartial und Html.RenderAction Html.RenderPartial ist für wiederholte UserControls geeignet und muss nur zum Rendern von Inhalten durch Modelle oder für UserControls für Werbung verwendet werden. Html.RenderAction ruft zunächst die Controller's Action-Methode auf; wenn dieser UserControl Daten aus der Datenbank beziehen muss, um die Datenbank zu rendern (die Datenbank über die Aktion zu lesen), ist diese Methode für diese Zeit geeigneter. 5.Html.Partial("MyView") Geben Sie einen Versuchsstrom als MvcHtmlString nach Standard-Routing-Regeln zurück. Rendert die "MyView"-Ansicht in eine MvcHtmlString. Es folgt den Standardregeln für die Ansichtssuche (d. h. aktuelles Verzeichnis prüfen und dann das Verzeichnis geteilt). Html.RenderPartial("MyView")
Ähnlich wie bei Html.Partial() besteht der Unterschied darin, dass es direkt in die Seite getippt wird, ohne Caching. Macht dasselbe wie Html.Partial(), nur dass es seine Ausgabe direkt in den Antwortstrom schreibt. Dies ist effizienter, da der Ansichtsinhalt nicht im Speicher gepuffert wird. Da die Methode jedoch keine Ausgabe zurückgibt, funktioniert @Html.RenderPartial("MyView") nicht. Sie müssen den Aufruf stattdessen in einen Codeblock hüllen: @{Html.RenderPartial("MyView"); }. RenderPage("MyView.cshtml")
Gibt eine spezielle Ansicht mit Pfaden, Dateinamen usw. zurück und gibt direkt wie Heml.RenderPartial() ohne Caching aus. Modellvariablen können weitergegeben werden. Rendert die angegebene Ansicht (identifiziert durch Pfad und Dateiname statt durch Ansichtsnamen) direkt in den Antwortstrom, wie Html.RenderPartial(). Du kannst jedem beliebigen Modell zur Ansicht hinzufügen, indem du es als zweiten Parameter einfügst RenderPage("MyView.cshtml",MyModel)
Ich bevorzuge
@RenderPage("_LayoutHeader.cshtml")Über @{Html.RenderPartial("_LayoutHeader"); }Nur weil die Syntax einfacher ist und besser lesbar. Abgesehen davon scheint es funktional keine Unterschiede zu geben.
|
Vorhergehend:ASP.NET---- implementiere eine Klicktaste oder einen Link, um den Login-Dialog zu öffnenNächster:Stellen Sie die CheckBoxList so ein, dass die Zeile nicht umwickelt wird
|