103

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

<div>hi</div>

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

@Html.RenderPartial("_Test")

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

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

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

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

4

1 に答える 1

191

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

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

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

*これは完全に真実ではありません。実際には、ViewContext.Writerにレンダリングされており、ページ全体がレンダリングおよび作成されると、すべてが応答に送られます。

于 2011-03-25T17:26:47.253 に答える