Html.RenderPartial me donnant une erreur de surcharge étrange?

103

J'ai fait une page partielle de test nommée _Test.cshtml et l' ai placée dans le même répertoire que ma vue qui l'appellera, la voici:

<div>hi</div>

Et dans la vue cshtml appelante, je mets simplement:

@Html.RenderPartial("_Test")

Ce qui me donne l'erreur:

CS1502: La meilleure correspondance de méthode surchargée pour 'System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult)' a des arguments non valides

J'ai également essayé le chemin complet avec le même résultat.

Je suis très confus quant à la raison pour laquelle cela agit de cette façon, je suppose qu'il me manque quelque chose de simple?

naspinski
la source

Réponses:

190

Vous obtenez cette erreur car les Html.RenderXXXassistants renvoient void - ils n'ont rien à renvoyer car ils écrivent des éléments directement * dans la réponse. Vous devriez les utiliser comme ceci:

@{ Html.RenderPartial("_Test"); }

Il existe également un assistant Html.Partial, qui fonctionnera avec votre syntaxe, mais je ne recommanderais pas de l'utiliser sauf si vous devez le faire, en raison des performances (il compose d'abord une vue partielle donnée en chaîne, puis la vue parent la met en réponse * ).

* ce n'est pas tout à fait vrai, ils sont en fait rendus dans ViewContext.Writer et une fois que la page entière est rendue et composée, tout va à la réponse

Lukáš Novotný
la source