Html.RenderPartial () -Syntax mit Razor


95

Dies funktioniert, da das Ergebnis des Renderns einer Teilansicht in einer Zeichenfolge zurückgegeben wird:

@Html.Partial("Path/to/my/partial/view")

Aber ich bevorzuge es zu benutzen RenderPartialund es scheint, dass ich schreiben muss:

@{Html.RenderPartial("Path/to/my/partial/view");}

anstatt:

@Html.RenderPartial("Path/to/my/partial/view");

Damit es funktioniert. Fehlermeldung:

 Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

Gibt es einen besseren Weg, anstatt den Codeblock @{...}nur für einen Methodenaufruf zu öffnen ?


Was ist der Fehler, den Sie erhalten, wenn Sie versuchen zu verwenden@Html.RenderPartial()
Neil Knight

Ich habe meinem Beitrag eine Nachricht hinzugefügt. Ich verstehe, warum es einen Fehler zeigt @ Html.RenderPartial () wird so grob analysiert wie <% ?: @ Html.RenderPartial ()?> Was falsch ist und nicht als <? Html.RenderPartial (); ?>, aber ich suche nach einer Problemumgehung.
Artvolk

Verwandte: Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction . Übrigens, warum bevorzugen Sie es zu verwenden RenderPartial?
Paolo Moretti

Antworten:


142
  • RenderPartial()ist eine void-Methode , die in den Antwortstrom schreibt. Eine void-Methode in C # benötigt a ;und muss daher von eingeschlossen werden { }.

  • Partial()ist eine Methode, die einen MvcHtmlString zurückgibt . In Razor können Sie eine Eigenschaft oder eine Methode aufrufen, die eine solche Zeichenfolge mit nur einem @Präfix zurückgibt , um sie von einfachem HTML auf der Seite zu unterscheiden.


1
Warum bevorzugen Sie die Verwendung von Html.RenderPartial anstelle von Html.Partial? Wenn Sie aus irgendeinem Grund mit Html.RenderPartial arbeiten möchten / müssen, gibt es keine Problemumgehung - das ist die Syntax.
Ofer Zelig

5
Ich benutze es, weil es effektiver sein sollte (weil es keine große Zeichenfolge zurückgibt).
Artvolk

45

Html.RenderPartial () ist eine void-Methode. Sie können überprüfen, ob eine Methode eine void-Methode ist, indem Sie mit der Maus über den Aufruf von RenderPartial in Ihrem Code fahren. Der Text (Erweiterung) void HtmlHelper.RenderPartial ...

Void-Methoden erfordern ein Semikolon am Ende des aufrufenden Codes.

In der Webforms-Ansichts-Engine hätten Sie Ihren Aufruf von Html.RenderPartial () in die Bienenstiche <%%> eingeschlossen

wie so

<% Html.RenderPartial("Path/to/my/partial/view"); %>

Wenn Sie die Razor View Engine verwenden, ist das Äquivalent

@{Html.RenderPartial("Path/to/my/partial/view");}

5
"Bienenstiche" - das ist eine
Premiere

9
@Html.Partial("NameOfPartialView")

Ich würde gerne verwenden Html.RenderPartial(), deshalb habe ich diese Frage gestellt. Die Details: "In Bezug auf die Leistung wurde behauptet, dass das Rendern direkt in den Ausgabestream besser ist (weshalb sie zunächst mit dem nichtigen RenderPartial gearbeitet haben)." von hier stackoverflow.com/a/2729851/118810
artvolk

0

Wenn Sie dieses Format erhalten, wird es wie ein Link zu einer anderen Seite oder einer anderen link.partial-Ansicht verwendet, die hauptsächlich zum Rendern der HTML-Dateien von einem Ort zum anderen verwendet wird.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.