RenderPage v。Html.Partial v。Html.RenderPartialの周りで私の頭脳を手に入れようとする中で、私はいくつかのテストファイルで遊んできました。私はいくつかの奇妙な動作に遭遇しました:一度RenderPage()が呼び出されると、それ以降のHtml.RenderPartial()へのすべての呼び出しがno-opsになるようです。なぜ他人を妨害するのでしょうか?MVC Razor RenderPageは、Html.RenderPartialのダウンストリーム使用を防ぎます。
Foo.cshtml:
<div>foo</div>
Bar.cshtml:
<div>bar</div>
Test1.cshtml:
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
@{ Html.RenderPartial("Foo"); }
@RenderPage("Bar.cshtml")
</body>
</html>
Test2.cshtml:
// Test2.cshtml is identical to Test1.cshtml, except the two lines below
// ...
<body>
@RenderPage("Bar.cshtml") // this line used to be second
@{ Html.RenderPartial("Foo"); } // this line used to be first
</body>
Test1は期待どおりに動作します:
foo
bar
しかし、Test2は決して "foo"をレンダリングしません。 @ {Html.RenderPartial( "Foo");}への私の呼び出しのようです。 }決して起こらない。
私はこの例を考案したことを認識しています。問題を解決する方法は探していません。私は、RenderPageとHtml.RenderPartialがどのように関連しているのか、なぜ彼らが互いに干渉しているのかを理解しようとしています。