Html.RenderP Partial memberi saya kesalahan kelebihan muatan yang aneh?

103

Saya membuat pengujian parsial halaman bernama _Test.cshtml dan meletakkannya di direktori yang sama dengan tampilan saya yang akan memanggilnya, ini dia:

<div>hi</div>

Dan dalam tampilan panggilan cshtml, saya sederhananya:

@Html.RenderPartial("_Test")

Yang memberi saya kesalahan:

CS1502: Metode overloaded terbaik yang cocok untuk 'System.Web.WebPages.WebPageExecutingBase.Write (System.Web.WebPages.HelperResult)' memiliki beberapa argumen yang tidak valid

Saya juga mencoba jalur lengkap dengan hasil yang sama.

Saya sangat bingung mengapa ini bertindak seperti ini, saya menganggap saya kehilangan sesuatu yang sederhana?

naspinski
sumber

Jawaban:

190

Anda mendapatkan kesalahan ini karena Html.RenderXXXpenolong mengembalikan kekosongan - mereka tidak memiliki apa pun untuk dikembalikan karena mereka menulis sesuatu secara langsung * untuk merespons. Anda harus menggunakannya seperti ini:

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

Ada juga Html. Partial helper, yang akan bekerja dengan sintaks Anda, tetapi saya tidak akan merekomendasikan menggunakannya kecuali Anda harus melakukannya, karena kinerja (pertama-tama menyusun tampilan parsial ke dalam string, dan kemudian tampilan induk menempatkannya ke dalam respons * ).

* ini tidak sepenuhnya benar, mereka sebenarnya sedang dirender ke ViewContext.Writer dan setelah seluruh halaman dirender dan disusun, semuanya masuk ke respons

Lukáš Novotný
sumber