webentwicklung-frage-antwort-db.com.de

Html.RenderPartial, das mir merkwürdigen Überlastungsfehler gibt?

Ich habe eine teilweise Testseite mit dem Namen _ Test.cshtml erstellt und sie in das gleiche Verzeichnis wie meine Ansicht gestellt, die sie aufruft. Hier ist sie:

<div>hi</div>

Und in der aufrufenden cshtml-Ansicht habe ich einfach gesagt:

@Html.RenderPartial("_Test")

Welches gibt mir den Fehler:

CS1502: Die beste überladene Methodenübereinstimmung für 'System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult)' weist einige ungültige Argumente auf

Ich habe auch den vollständigen Pfad mit dem gleichen Ergebnis ausprobiert.

Ich bin sehr verwirrt, warum sich das so verhält, ich nehme an, ich vermisse etwas Einfaches?

102
naspinski

Sie erhalten diesen Fehler, weil Html.RenderXXX helfer kehren nicht zurück - sie haben nichts zurückzugeben, weil sie direkt * an die antwort schreiben. Du solltest sie so benutzen:

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

Es gibt auch den Html.Partial-Helfer, der mit Ihrer Syntax funktioniert, aber ich würde ihn aus Leistungsgründen nicht empfehlen, es sei denn, Sie müssen ihn verwenden. ).

* Dies ist nicht ganz richtig, sie werden tatsächlich in ViewContext.Writer gerendert. Sobald die gesamte Seite gerendert und komponiert ist, geht das Ganze zur Antwort

189