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


Dans ASP.NET MVC, quelle est la différence entre:

  • Html.Partial et Html.RenderPartial
  • Html.Action et Html.RenderAction

923
2018-03-09 15:41


origine


Réponses:


Html.Partial renvoie une chaîne. Html.RenderPartial appels Write en interne et retourne void.

L'utilisation de base est:

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

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

Dans l'extrait ci-dessus, les deux appels donnent le même résultat.

Alors qu'on peut stocker la sortie de Html.Partial dans une variable ou le renvoyer d'une méthode, un ne peux pas fais ça avec Html.RenderPartial. Le résultat sera écrit dans le Response diffuser pendant l'exécution / l'évaluation.

Cela s'applique également à Html.Action et Html.RenderAction.


1113
2018-03-09 15:44



Pensez à @ Html.Partial comme code HTML copié dans la page parente. Pensez à @ Html.RenderPartial comme un contrôle utilisateur .ascx incorporé dans la page parente. Un contrôle utilisateur .ascx a beaucoup plus de frais généraux.

'Html.Partial' renvoie une chaîne codée html qui est construite en ligne avec le parent. Il accède au modèle du parent.

'@ Html.RenderPartial' renvoie l'équivalent d'un contrôle utilisateur .ascx. Il obtient sa propre copie du ViewDataDictionary de la page et les modifications apportées à ViewData de RenderPartial n'affectent pas ViewData du parent.

En utilisant la réflexion, nous trouvons:

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);
}

76
2018-04-18 14:36



La différence est d'abord on retourne un MvcHtmlString mais en second lieu (Render..) sorties directement à la réponse.


54
2018-03-09 15:44



Voici ce que j'ai trouvé:

Utilisation RenderAction quand vous n'avez pas de modèle à envoyer à la vue et que vous avez beaucoup de HTML à ramener qui n'a pas besoin d'être stocké dans une variable.

Utilisation action lorsque vous n'avez pas de modèle à envoyer à la vue et que vous avez besoin d'un peu de texte à stocker dans une variable.

Utilisation RenderPartial Lorsque vous avez un modèle à envoyer à la vue et qu'il y aura beaucoup de HTML qui n'a pas besoin d'être stocké dans une variable.

Utilisation Partiel lorsque vous avez un modèle à envoyer à la vue et qu'il y aura un peu de texte qui doit être stocké dans une variable.

RenderAction et RenderPartial sont plus rapides.


29
2017-11-18 20:55



Selon moi @Html.RenderPartial() a une exécution plus rapide que @Html.Partial() en raison de Html.RenderPartial donne une réponse rapide à la sortie.

Parce que quand j'utilise @Html.Partial(), mon site Web prend plus de temps à charger par rapport à @Html.RenderPartial()


21
2018-02-04 04:43



@Html.Partial et @Html.RenderPartial sont utilisés lorsque votre modèle de vue partielle est la correspondance du modèle parent, nous n'avons pas besoin de créer une méthode d'action pour l'appeler.

@Html.Action et @Html.RenderAction sont utilisés lorsque votre modèle de vue partielle est indépendant du modèle parent, fondamentalement il est utilisé lorsque vous souhaitez afficher un contenu de type widget sur la page. Vous devez créer une méthode d'action qui renvoie un résultat partiel lors de l'appel de la méthode.


14
2018-03-23 13:10



Plus sur la question:

"Lorsque Html.RenderPartial () est appelé avec juste le nom du partiel   vue, ASP.NET MVC passera à la vue partielle le même modèle et   Les objets du dictionnaire ViewData utilisés par le modèle de vue appelant. "

"NerdDinner" de Professional ASP.NET MVC 1.0


12
2017-10-02 22:05