【发布时间】:2011-10-20 17:35:16
【问题描述】:
为了让我的大脑了解 RenderPage v. Html.Partial v. Html.RenderPartial,我一直在玩一些测试文件。我遇到了一些奇怪的行为:一旦调用 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 是如何相关的,以及它们为什么会相互干扰。
【问题讨论】:
标签: asp.net-mvc