Html.RenderPartialで奇妙なオーバーロードエラーが発生しますか?


103

_Test.cshtmlという名前のテスト用の部分ページを作成し、それを呼び出すビューと同じディレクトリに配置しました。

<div>hi</div>

そして、呼び出し側のcshtmlビューでは、単に次のように記述します。

@Html.RenderPartial("_Test")

それは私にエラーを与えます:

CS1502: 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)'のオーバーロードされたメソッドの最適な一致には、いくつかの無効な引数があります

私も同じ結果でフルパスを試しました。

なぜこれがこのように機能しているのか私は非常に混乱しています、私は単純な何かが欠けていると思いますか?

回答:


190

Html.RenderXXXヘルパーがvoidを返すため、このエラーが発生します-応答に直接*書き込みているため、返すものはありません。次のように使用する必要があります。

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

構文で機能するHtml.Partialヘルパーもありますが、パフォーマンスのため、必要でない限り使用しないことをお勧めします(指定された部分ビューを最初に文字列に構成し、次に親ビューが応答に含めます*)。 )。

*これは完全に正しいわけではなく、実際にはViewContext.Writerにレンダリングされており、ページ全体がレンダリングされて構成されると、すべてが応答します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.