Was ist in ASP.NET MVC der Unterschied zwischen:
Html.Partial
yHtml.RenderPartial
Html.Action
yHtml.RenderAction
Was ist in ASP.NET MVC der Unterschied zwischen:
Html.Partial
y Html.RenderPartial
Html.Action
y Html.RenderAction
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
.
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);
}
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.
@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 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.