Dans ASP.NET MVC, quelle est la différence entre:
Html.Partial
etHtml.RenderPartial
Html.Action
etHtml.RenderAction
.net
asp.net-mvc
partial-views
renderpartial
renderaction
Ghooti Farangi
la source
la source
Réponses:
Html.Partial
renvoie une chaîne.Html.RenderPartial
appelle enWrite
interne et revientvoid
.L'utilisation de base est:
Dans l'extrait ci-dessus, les deux appels donneront le même résultat.
Bien que l'on puisse stocker la sortie de
Html.Partial
dans une variable ou la renvoyer à partir d'une méthode, on ne peut pas le faire avecHtml.RenderPartial
.Le résultat sera écrit dans le
Response
flux pendant l'exécution / l'évaluation.Cela vaut également pour
Html.Action
etHtml.RenderAction
.la source
Html.Partial()
a été créé pour avoir une syntaxe plus fluide avec Razor. Comme l'a dit @Vlad,Html.RenderPartial()
est plus efficace.Considérez @ Html.Partial comme du code HTML copié dans la page parent. Considérez @ Html.RenderPartial comme un contrôle utilisateur .ascx incorporé dans la page parent. 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 au ViewData du RenderPartial n'affectent pas le ViewData du parent.
En utilisant la réflexion, nous trouvons:
la source
Partial
rendu dans un tampon ne signifie pas qu'il est rendu de manière asynchrone - bien au contraire - je ne vois pas comment vous pouvez affirmer qu'ilRenderPartial
est "plus gourmand en ressources".Voici ce que j'ai trouvé:
Utilisez RenderAction lorsque vous n'avez pas de modèle à envoyer à la vue et que vous avez beaucoup de code HTML à ramener qui n'a pas besoin d'être stocké dans une variable.
Utilisez Action lorsque vous n'avez pas de modèle à envoyer à la vue et que vous avez un peu de texte à ramener qui doit être stocké dans une variable.
Utilisez RenderPartial lorsque vous avez un modèle à envoyer à la vue et qu'il y aura beaucoup de code HTML qui n'aura pas besoin d'être stocké dans une variable.
Utilisez Partiel lorsque vous avez un modèle à envoyer à la vue et il y aura un peu de texte qui devra être stocké dans une variable.
RenderAction et RenderPartial sont plus rapides.
la source
La différence est que le premier renvoie une sortie
MvcHtmlString
mais la seconde (Render..
) directement à la réponse.la source
Selon moi, l'
@Html.RenderPartial()
exécution est plus rapide qu'en@Html.Partial()
raison de Html.RenderPartial donne une réponse rapide à Output.Parce que lorsque j'utilise
@Html.Partial()
, mon site Web prend plus de temps à charger par rapport à@Html.RenderPartial()
la source
@Html.Partial
et@Html.RenderPartial
sont utilisés lorsque votre modèle de vue partielle correspond à un modèle parent, nous n'avons pas besoin de créer de 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, il est essentiellement 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 de vue partielle lors de l'appel de la méthode à partir de la vue.la source
En savoir plus sur la question:
"NerdDinner" de Professional ASP.NET MVC 1.0
la source
Le type de retour de
Html.RenderAction
estvoid
cela signifie qu'il rend directement les réponses dans View où le type de retourHtml.Action
est.MvcHtmlString
Vous pouvez attraper sa vue de rendu dans le contrôleur et la modifier en utilisant la méthode suivanteCela renverra la chaîne Html de la vue.
Ceci est également applicable à
Html.Partial
etHtml.RenderPartial
la source
Partial ou RenderPartial: Pas besoin de créer de méthode d'action. à utiliser lorsque les données à afficher sur la vue partielle sont déjà présentes dans le modèle de la page actuelle.
Action ou RenderAction: nécessite une méthode d'action enfant. à utiliser lorsque les données à afficher sur la vue ont un modèle indépendant.
la source
Différences:
Le type de retour
RenderPartial
est isvoid
, où asPartial
renvoieMvcHtmlString
Syntaxe d'appel
Partial()
etRenderPartial()
méthodes dans les vues RazorSyntaxe d'appel
Partial()
etRenderPartial()
méthodes dans les vues de formulaire WebVoici les 2 questions d'entrevue courantes liées à
Partial()
etRenderPartial()
quand utiliseriez-vousPartial()
plusRenderPartial()
et vice versa?La principale différence est que
RenderPartial()
renvoie void et la sortie sera écrite directement dans le flux de sortie, où au fur et à mesure que laPartial()
méthode revientMvcHtmlString
, qui peut être affectée à une variable et la manipuler si nécessaire. Ainsi, lorsqu'il est nécessaire d'affecter la sortie à une variable pour la manipuler, utilisez alors Partial (), sinon utilisez RenderPartial ().Lequel est le meilleur pour la performance?
Du point de vue des performances, le rendu directement sur le flux de sortie est meilleur.
RenderPartial()
fait exactement la même chose et est meilleur pour les performancesPartial()
.la source
Html.Partial
: revientMvcHtmlString
et ralentitHtml.RenderPartial
: rendre / écrire directement sur le flux de sortie et les retoursvoid
et c'est très rapide par rapport àHtml.Partial
la source
Pour "partiel" je l'utilise toujours comme suit:
S'il y a quelque chose que vous devez inclure dans une page que vous devez consulter via le contrôleur (comme vous le feriez avec un appel Ajax), utilisez "Html.RenderPartial".
Si vous avez une inclusion "statique" qui n'est pas liée à un contrôleur en soi et uniquement dans le dossier "partagé" par exemple, utilisez "HTML.partial"
la source
@Html.Partial
renvoie la vue dans une chaîne codée en HTML et utilise le mêmeTextWriter
objet de vue .@Html.RenderPartial
cette méthode retournevoid
.@Html.RenderPartial
est plus rapide que@Html.Partial
La syntaxe pour
PartialView
:la source