1086 Stimmen

Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction

Was ist in ASP.NET MVC der Unterschied zwischen:

  • Html.Partial y Html.RenderPartial
  • Html.Action y Html.RenderAction

1279voto

GvS Punkte 51365

Html.Partial gibt einen String zurück. Html.RenderPartial ruft auf. Write intern und kehrt zurück void .

Die grundlegende Verwendung ist:

// Razor syntax
@Html.Partial("ViewName")
@{ Html.RenderPartial("ViewName");  }

// WebView syntax
<%: Html.Partial("ViewName") %>
<% Html.RenderPartial("ViewName"); %>

In dem obigen Ausschnitt führen beide Aufrufe zum gleichen Ergebnis.

Man kann zwar die Ausgabe von Html.Partial in einer Variablen oder aus einer Methode zurückgeben, muss man kann nicht dies tun mit Html.RenderPartial .

Das Ergebnis wird in die Datei Response Stream während der Ausführung/Auswertung.

Dies gilt auch für Html.Action y Html.RenderAction .

91voto

CodeBon Punkte 1144

Stellen Sie sich @Html.Partial als HTML-Code vor, der in die übergeordnete Seite kopiert wird. Stellen Sie sich @Html.RenderPartial als ein .ascx-Benutzersteuerelement vor, das in die übergeordnete Seite integriert wird. Ein .ascx-Benutzersteuerelement hat viel mehr Overhead.

@Html.Partial' gibt eine html-kodierte Zeichenkette zurück, die inline mit dem übergeordneten Element erstellt wird. Er 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 Controls aus.

Durch Reflexion finden wir:

public static MvcHtmlString Partial(this HtmlHelper htmlHelper, string partialViewName, object model, ViewDataDictionary viewData)
{
    MvcHtmlString mvcHtmlString;
    using (StringWriter stringWriter = new StringWriter(CultureInfo.CurrentCulture))
    {
        htmlHelper.RenderPartialInternal(partialViewName, viewData, model, stringWriter, ViewEngines.Engines);
        mvcHtmlString = MvcHtmlString.Create(stringWriter.ToString());
    }
    return mvcHtmlString;
}

public static void RenderPartial(this HtmlHelper htmlHelper, string partialViewName)
{
    htmlHelper.RenderPartialInternal(partialViewName, htmlHelper.ViewData, null, htmlHelper.ViewContext.Writer, ViewEngines.Engines);
}

73voto

David Punkte 1520

Ich habe Folgendes herausgefunden:

Verwenden Sie RenderAction wenn Sie kein Modell haben, das Sie an die Ansicht senden können, und eine Menge HTML zurückbringen müssen, die nicht in einer Variablen gespeichert werden muss.

Verwenden Sie Aktion wenn Sie kein Modell haben, das Sie an die Ansicht senden können, aber ein wenig Text zurückbringen müssen, der in einer Variablen gespeichert werden muss.

Verwenden Sie RenderPartial wenn Sie ein Modell an die Ansicht senden müssen und eine Menge HTML-Daten vorhanden sind, die nicht in einer Variablen gespeichert werden müssen.

Verwenden Sie Teilweise wenn Sie ein Modell an die Ansicht senden müssen und ein wenig Text in einer Variablen gespeichert werden muss.

RenderAction y RenderPartial sind schneller.

55voto

Aliostad Punkte 78595

Der Unterschied ist, dass die erste eine MvcHtmlString sondern zweitens ( Render.. ) direkt in die Antwort ausgibt.

25voto

Jayesh Patel Punkte 301

@Html.Partial y @Html.RenderPartial verwendet werden, wenn Ihr Partial View Model dem Parent Model entspricht, müssen wir keine Aktionsmethode erstellen, um diese aufzurufen.

@Html.Action y @Html.RenderAction werden verwendet, wenn Ihr partielles Ansichtsmodell unabhängig vom übergeordneten Modell ist, grundsätzlich wird es verwendet, wenn Sie einen beliebigen Widget-Typ Inhalt auf der Seite anzeigen möchten. Sie müssen eine Aktionsmethode erstellen, die ein Ergebnis der Teilansicht zurückgibt, während Sie die Methode aus der Ansicht aufrufen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X