Syntaxe Html.RenderPartial () avec Razor

95

Cela fonctionne, car il renvoie le résultat du rendu de vue partielle dans une chaîne:

@Html.Partial("Path/to/my/partial/view")

Mais je préfère utiliser RenderPartialet il semble que j'ai besoin d'écrire:

@{Html.RenderPartial("Path/to/my/partial/view");}

au lieu de:

@Html.RenderPartial("Path/to/my/partial/view");

Pour que ça marche. Message d'erreur:

 Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

S'il existe un meilleur moyen au lieu d'ouvrir le bloc de code @{...}juste pour un appel de méthode?

artvolk
la source
Quelle est l'erreur que vous obtenez lorsque vous essayez d'utiliser@Html.RenderPartial()
Neil Knight
J'ai ajouté un message à mon message. Je comprends pourquoi il montre une erreur @ Html.RenderPartial () est analysé aussi grossièrement que <%?: @ Html.RenderPartial ()?> Qui est faux et non comme <? Html.RenderPartial (); ?>, mais je cherche une solution de contournement.
artvolk
Connexes: Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction . BTW pourquoi préférez-vous utiliser RenderPartial?
Paolo Moretti

Réponses:

142
  • RenderPartial()est une méthode void qui écrit dans le flux de réponse. Une méthode void, en C #, a besoin de a ;et doit donc être entourée de { }.

  • Partial()est une méthode qui renvoie un MvcHtmlString . Dans Razor, vous pouvez appeler une propriété ou une méthode qui renvoie une telle chaîne avec juste un @préfixe pour la distinguer du HTML brut que vous avez sur la page.

Ofer Zelig
la source
1
Pourquoi préférez-vous utiliser Html.RenderPartial au lieu de Html.Partial? Si, pour une raison quelconque, vous voulez / devez utiliser Html.RenderPartial, il n'y a pas de solution de contournement - c'est la syntaxe.
Ofer Zelig
5
Je l'utilise car il devrait être plus efficace (car il ne renvoie pas de grosse chaîne).
artvolk
45

Html.RenderPartial () est une méthode void - vous pouvez vérifier si une méthode est une méthode void en plaçant votre souris sur l'appel à RenderPartial dans votre code et vous verrez le texte (extension) void HtmlHelper.RenderPartial ...

Les méthodes Void nécessitent un point-virgule à la fin du code d'appel.

Dans le moteur d'affichage des formulaires Web, vous auriez enfermé votre appel Html.RenderPartial () dans les piqûres d'abeilles <%%>

ainsi

<% Html.RenderPartial("Path/to/my/partial/view"); %>

lorsque vous utilisez le moteur de visualisation Razor, l'équivalent est

@{Html.RenderPartial("Path/to/my/partial/view");}
Nicholas Murray
la source
5
"piqûres d'abeille" - c'est une première (pour moi?)
JoeBrockhaus
9
@Html.Partial("NameOfPartialView")
RouR
la source
Je voudrais utiliser Html.RenderPartial(), c'est pourquoi j'ai posé cette question. Les détails: "En termes de performances, il a été affirmé que le rendu directement dans le flux de sortie est meilleur (c'est pourquoi ils sont allés avec le RenderPartial vide pour commencer)." à partir d'ici stackoverflow.com/a/2729851/118810
artvolk
0

Si vous recevez ce format, cela prend comme un lien vers une autre page ou une autre vue link.partial principalement utilisée pour rendre les fichiers html d'un endroit à un autre.

Sankar
la source