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 ?

artvolk
quelle
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.

Ofer Zelig
quelle
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");}
Nicholas Murray
quelle
5
"Bienenstiche" - das ist eine
Premiere
9
@Html.Partial("NameOfPartialView")
RouR
quelle
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.

Sankar
quelle