web-dev-qa-db-ja.com

Html.RenderPartialは私に奇妙なオーバーロードエラーを与えますか?

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

<div>hi</div>

そして、呼び出し側のcshtmlビューに、私は単に次を置きます:

@Html.RenderPartial("_Test")

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

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

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

私はこれがこのように振る舞う理由について非常に混乱しています、私は単純な何かを見逃していると思いますか?

102
naspinski

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

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

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

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

189