Antworten:
Html.Partial("MyView")
Rendert die "MyView" -Ansicht in eine MvcHtmlString
. Es folgt den Standardregeln für die Ansichtssuche (dh überprüfen Sie das aktuelle Verzeichnis und dann das Shared
Verzeichnis).
Html.RenderPartial("MyView")
Tut das Gleiche wie Html.Partial()
, außer 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, @Html.RenderPartial("MyView")
funktioniert sie nicht. Sie müssen den Aufruf stattdessen in einen Codeblock einschließen : @{Html.RenderPartial("MyView");}
.
RenderPage("MyView.cshtml")
Rendert die angegebene Ansicht (identifiziert durch Pfad und Dateiname anstelle des Ansichtsnamens) direkt in den Antwortstrom, z Html.RenderPartial()
. Sie können der Ansicht ein beliebiges Modell hinzufügen, indem Sie es als zweiten Parameter hinzufügen
RenderPage("MyView.cshtml", MyModel)
@Html.Partial("MyView")
vs.@{Html.RenderPartial("MyView");}
RenderPage
? Ich möchte eine andere Seite verschachteln, indem ich einen bestimmten Abfrageparameter spezifiziere, der wiederum die Daten auf dieser Seite filtert und außerdem das eigene Layout entfernt.
ich bevorzuge
@RenderPage("_LayoutHeader.cshtml")
Über
@{ Html.RenderPartial("_LayoutHeader"); }
Nur weil die Syntax einfacher und lesbarer ist. Davon abgesehen scheint es keine funktionalen Unterschiede zu geben.
BEARBEITEN: Ein Vorteil von RenderPartial ist, dass Sie nicht den gesamten Pfad oder die Dateierweiterung angeben müssen, um die allgemeinen Stellen automatisch zu durchsuchen.
RenderPage
wegen der Syntax zu.
Die RenderPartial- Methode gibt kein HTML-Markup wie die meisten anderen Hilfsmethoden zurück . Stattdessen wird der Inhalt direkt in den Antwortstrom geschrieben, weshalb wir ihn wie eine vollständige Zeile von C # mit einem Semikolon aufrufen müssen.
Dies ist etwas effizienter als das Puffern des gerenderten HTML-Codes aus der Teilansicht, da er ohnehin in den Antwortstrom geschrieben wird. Wenn Sie eine konsistentere Syntax bevorzugen, können Sie die Html.Partial- Methode verwenden, die genau das Gleiche wie die RenderPartial- Methode tut , jedoch ein HTML-Fragment zurückgibt und als @ Html.Partial ("Produkt", S.) verwendet werden kann.
@RenderPages()
Das Obige funktioniert nicht in ASP.NET MVC. Es funktioniert nur in Webseiten.
@Html.Partial("_Footer")
Sie müssen das oben genannte in ASP.NET MVC verwenden.