web-dev-qa-db-fra.com

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

J'ai fait une page partielle de test nommée _ Test.cshtml et l'ai mise 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)" contient 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 que je manque quelque chose de simple?

102
naspinski

Vous obtenez cette erreur car Html.RenderXXX helpers return void - ils n'ont rien à retourner car ils écrivent directement des choses * à la réponse. Vous devez les utiliser comme ceci:

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

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

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

189
Lukáš Novotný