Бритва: @ Html.Partial () против @RenderPage () - PullRequest
91 голосов
/ 21 декабря 2010

Как правильно отрисовать дочерний шаблон?

И в чем разница?Оба, кажется, работают для меня.

И почему @Html.RenderPartial() больше не работает?

Ответы [ 5 ]

125 голосов
/ 15 июня 2011
Html.Partial("MyView")

Отображает представление "MyView" в MvcHtmlString. Он следует стандартным правилам для просмотра представления (то есть проверьте текущий каталог, затем проверьте каталог Shared).

Html.RenderPartial("MyView")

Действует так же, как и Html.Partial(), за исключением того, что записывает свои выходные данные непосредственно в поток ответов. Это более эффективно, потому что содержимое представления не буферизируется в памяти. Однако, поскольку метод не возвращает никакого вывода, @Html.RenderPartial("MyView") не будет работать. Вместо этого вы должны заключить вызов в блок кода: @{Html.RenderPartial("MyView");}.

RenderPage("MyView.cshtml")

Отображает указанное представление (идентифицируемое по пути и имени файла, а не по имени представления) непосредственно в поток ответа, например Html.RenderPartial(). Вы можете указать любую понравившуюся модель для представления, включив ее в качестве второго параметра

RenderPage("MyView.cshtml", MyModel)
16 голосов
/ 18 марта 2011

Я предпочитаю

@RenderPage("_LayoutHeader.cshtml")

Более

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

Только потому, что синтаксис проще и более читабелен.Кроме этого, кажется, что нет никаких различий в функциональности.

РЕДАКТИРОВАТЬ: Одним из преимуществ RenderPartial является то, что вам не нужно указывать полный путь или расширение файла, он будет искать общие места автоматически.

6 голосов
/ 26 января 2013

Метод RenderPartial не возвращает разметку HTML, как большинство других вспомогательных методов. Вместо этого он пишет содержимое непосредственно в поток ответов, поэтому мы должны назвать его как завершенную строку C #, используя точку с запятой.

Это немного более эффективно, чем буферизация визуализированного HTML из частичного представления, так как он будет записан в поток ответа в любом случае. Если вы предпочитаете более согласованный синтаксис, вы можете использовать метод Html.Partial , который выполняет те же действия, что и метод RenderPartial , но возвращает фрагмент HTML и может использоваться как @ Html.Partial («Товар», стр.).

2 голосов
/ 13 августа 2014

Мы также можем передать модель, используя частичные представления. @ Html.Partial ( "MyView", "MyModel");

0 голосов
/ 26 февраля 2018
@RenderPages() 

Выше не работает в ASP.NET MVC. Это работает только на веб-страницах.

@Html.Partial("_Footer")

Вам нужно будет использовать вышеупомянутое в ASP.NET MVC.

...