Was ist in ASP.NET MVC der Unterschied zwischen:
Html.Partial
undHtml.RenderPartial
Html.Action
undHtml.RenderAction
.net
asp.net-mvc
partial-views
renderpartial
renderaction
Ghooti Farangi
quelle
quelle
Antworten:
Html.Partial
gibt einen String zurück.Html.RenderPartial
ruftWrite
intern an und kehrt zurückvoid
.Die grundlegende Verwendung ist:
Im obigen Snippet führen beide Aufrufe zum gleichen Ergebnis.
Während man die Ausgabe von
Html.Partial
in einer Variablen speichern oder von einer Methode zurückgeben kann, kann man dies nicht mit tunHtml.RenderPartial
.Das Ergebnis wird
Response
während der Ausführung / Auswertung in den Stream geschrieben .Dies gilt auch für
Html.Action
undHtml.RenderAction
.quelle
Html.Partial()
wurde entwickelt, um eine flüssigere Syntax mit Razor zu haben. Wie @Vlad sagte,Html.RenderPartial()
ist effizienter.Stellen Sie sich @ Html.Partial als HTML-Code vor, der auf die übergeordnete Seite kopiert wird. Stellen Sie sich @ Html.RenderPartial als ein .ascx-Benutzersteuerelement vor, das in die übergeordnete Seite integriert ist. Ein .ascx-Benutzersteuerelement hat weitaus mehr Overhead.
'@ Html.Partial' gibt eine HTML-codierte Zeichenfolge zurück, die inline mit dem übergeordneten Zeichen erstellt wird . Es greift auf das Modell des Elternteils zu.
'@ Html.RenderPartial' gibt das Äquivalent eines .ascx-Benutzersteuerelements zurück. Es erhält eine eigene Kopie des ViewDataDictionary der Seite, und Änderungen an den ViewData des RenderPartials wirken sich nicht auf die ViewData des übergeordneten Elements aus.
Mit Reflexion finden wir:
quelle
Partial
Rendern in einen Puffer nicht bedeutet, dass es asynchron gerendert wird - im Gegenteil -, kann ich nicht sehen, wie Sie behaupten können,RenderPartial
"ressourcenintensiver" zu sein.Folgendes habe ich gefunden:
Verwenden Sie RenderAction, wenn Sie kein Modell zum Senden an die Ansicht haben und viel HTML zurückbringen müssen, das nicht in einer Variablen gespeichert werden muss.
Verwenden Sie Aktion, wenn Sie kein Modell zum Senden an die Ansicht haben und ein wenig Text zurückbringen möchten, der in einer Variablen gespeichert werden muss.
Verwenden Sie RenderPartial, wenn Sie ein Modell an die Ansicht senden möchten und es viele HTML- Dateien gibt, die nicht in einer Variablen gespeichert werden müssen.
Verwenden Sie Partial, wenn Sie ein Modell an die Ansicht senden möchten und ein wenig Text in einer Variablen gespeichert werden muss.
RenderAction und RenderPartial sind schneller.
quelle
Der Unterschied besteht darin, dass der erste eine
MvcHtmlString
zweite (Render..
) Ausgabe direkt an die Antwort zurückgibt .quelle
Laut mir
@Html.RenderPartial()
hat die Ausführung schneller als@Html.Partial()
aufgrund von Html.RenderPartial gibt eine schnelle Antwort auf die Ausgabe.Denn wenn ich
@Html.Partial()
meine Website benutze , dauert das Laden länger als im Vergleich zu@Html.RenderPartial()
quelle
@Html.Partial
und@Html.RenderPartial
werden verwendet, wenn Ihr Teilansichtsmodell der Entsprechung des übergeordneten Modells entspricht. Wir müssen keine Aktionsmethode erstellen, um dies aufzurufen.@Html.Action
und@Html.RenderAction
werden verwendet, wenn Ihr Teilansichtsmodell vom übergeordneten Modell unabhängig ist. Grundsätzlich wird es verwendet, wenn Sie Inhalte vom Typ Widget auf einer Seite anzeigen möchten. Sie müssen eine Aktionsmethode erstellen, die beim Aufrufen der Methode aus der Ansicht ein Teilansichtsergebnis zurückgibt.quelle
Mehr zur Frage:
"NerdDinner" von Professional ASP.NET MVC 1.0
quelle
Der Rückgabetyp
Html.RenderAction
ist ,void
dass Mittel direkt die Antworten in Ansicht rendert , wo der RückgabetypHtml.Action
sindMvcHtmlString
Sie können ihre Render - Ansicht in der Steuerung fangen und ändern Sie es durch folgende Verfahren unter Verwendung vonDies gibt die HTML-Zeichenfolge der Ansicht zurück.
Dies gilt auch für
Html.Partial
undHtml.RenderPartial
quelle
Partial oder RenderPartial: Es muss keine Aktionsmethode erstellt werden. Verwenden Sie diese Option, wenn Daten, die in der Teilansicht angezeigt werden sollen, bereits im Modell der aktuellen Seite vorhanden sind.
Aktion oder RenderAction: Erfordert eine untergeordnete Aktionsmethode. Verwenden Sie diese Option, wenn die in der Ansicht anzuzeigenden Daten ein unabhängiges Modell haben.
quelle
Unterschiede:
Der Rückgabetyp von
RenderPartial
istvoid
, wobei alsPartial
RückgabeMvcHtmlString
Syntax zum Aufrufen
Partial()
undRenderPartial()
Methoden in Razor-AnsichtenSyntax zum Aufrufen
Partial()
undRenderPartial()
Methoden in WebformularansichtenIm Folgenden sind die zwei gemeinsamen Interview Fragen zu
Partial()
undRenderPartial()
Wann möchten Sie verwendenPartial()
überRenderPartial()
und umgekehrt?Der Hauptunterschied besteht darin, dass
RenderPartial()
void zurückgegeben wird und die Ausgabe direkt in den Ausgabestream geschrieben wird, wo diePartial()
Methode zurückgibtMvcHtmlString
, die einer Variablen zugewiesen und bei Bedarf bearbeitet werden kann. Wenn Sie die Ausgabe einer Variablen zuweisen müssen, um sie zu bearbeiten, verwenden Sie Partial (), andernfalls RenderPartial ().Welches ist besser für die Leistung?
Aus Sicht der Leistung ist das Rendern direkt in den Ausgabestream besser.
RenderPartial()
macht genau das gleiche und ist besser für die Leistung vorbeiPartial()
.quelle
Html.Partial
: kehrt zurückMvcHtmlString
und langsamHtml.RenderPartial
: direkt auf Ausgabestream rendern / schreiben und zurückgebenvoid
und es ist sehr schnell im Vergleich zuHtml.Partial
quelle
Für "teilweise" benutze ich es immer wie folgt:
Wenn Sie etwas in eine Seite aufnehmen müssen, das Sie über den Controller aufrufen müssen (wie bei einem Ajax-Aufruf), verwenden Sie "Html.RenderPartial".
Wenn Sie ein 'statisches' Include haben, das nicht per se mit einem Controller verknüpft ist und sich beispielsweise nur im 'freigegebenen' Ordner befindet, verwenden Sie "HTML.partial".
quelle
@Html.Partial
Gibt die Ansicht in einer HTML-codierten Zeichenfolge zurück und verwendet dasselbe AnsichtsobjektTextWriter
.@Html.RenderPartial
Diese Methode gibt zurückvoid
.@Html.RenderPartial
ist schneller als@Html.Partial
Die Syntax für
PartialView
:quelle