Как лучше всего отрисовать дочерний шаблон?
А какая разница? Мне кажется, оба работают.
И почему @Html.RenderPartial()
больше не работает?
Ответы:
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)
@Html.Partial("MyView")
vs.@{Html.RenderPartial("MyView");}
RenderPage
? Я хочу вложить другую страницу, указав конкретный параметр запроса, который, в свою очередь, будет фильтровать данные на этой странице и, кроме того, удалять собственный макет.
я предпочитаю
@RenderPage("_LayoutHeader.cshtml")
Над
@{ Html.RenderPartial("_LayoutHeader"); }
Только потому, что синтаксис проще и читабельнее. Кроме этого, похоже, нет никаких различий в функциональности.
РЕДАКТИРОВАТЬ: Одно из преимуществ RenderPartial заключается в том, что вам не нужно указывать весь путь или расширение файла, он будет автоматически искать общие места.
RenderPage
синтаксисом.
Метод RenderPartial не возвращает разметку HTML, как большинство других вспомогательных методов. Вместо этого он записывает содержимое непосредственно в поток ответа, поэтому мы должны называть его как полную строку C #, используя точку с запятой.
Это немного более эффективно, чем буферизация визуализированного HTML из частичного представления, поскольку он все равно будет записан в поток ответа. Если вы предпочитаете более последовательный синтаксис, вы можете использовать метод Html.Partial , который выполняет те же функции, что и метод RenderPartial , но возвращает фрагмент HTML и может использоваться как @ Html.Partial («Продукт», p).
@RenderPages()
Вышеупомянутое не работает в ASP.NET MVC. Работает только на веб-страницах.
@Html.Partial("_Footer")
Вам нужно будет использовать это в ASP.NET MVC.