1. ホーム
  2. asp.net-mvc

[解決済み] Html.RenderPartialで変なオーバーロードエラーが出る?

2023-01-04 08:38:14

質問

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

<div>hi</div>

そして、呼び出し側のcshtmlビューには、単純に

@Html.RenderPartial("_Test")

というエラーが出ます。

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

フルパスも試しましたが、同じ結果でした。

なぜこのような動作をするのか、非常に混乱しています。

どのように解決するのですか?

このエラーが発生する原因は Html.RenderXXX ヘルパーは void を返すので、何も返すものがありません。このように使用する必要があります。

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

Html.Partialヘルパーもあり、これはあなたの構文で動作しますが、パフォーマンスの点から、必要な場合以外は使用をお勧めしません(与えられた部分ビューをまず文字列に構成し、次に親ビューがそれをresponse*に入れます)。

* これは完全に正しいわけではなく、実際には ViewContext.Writer にレンダリングされ、ページ全体がレンダリングされ構成されると、全体がレスポンスに移動します。