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?


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.


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

5
"piqûres d'abeille" - c'est une première (pour moi?)
JoeBrockhaus

9
@Html.Partial("NameOfPartialView")

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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.