В попытке получить мой мозг вокруг 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, и почему они мешают друг другу.