Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 13486|Відповідь: 0

[ASP.NET] @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderActi...

[Копіювати посилання]
Опубліковано 19.07.2015 23:37:53 | | |
1. RenderBody
У рушії Razor немає «головної сторінки», натомість сторінка під назвою «layout» (_Layout.cshtml) розміщується у папці спільного перегляду. На цій сторінці ви побачите заяву в тегу:
@RenderBody()
Насправді це працює подібно до керування сервером на головній сторінці: коли створюється перегляд на основі цієї сторінки верстки, вміст перегляду об'єднується зі сторінкою верстки, а вміст новоствореного вигляду відображається між мітками за допомогою методу @RenderBody() сторінки верстки.
Цей метод не потребує параметрів і може з'являтися лише один раз.
2. RenderPage
Як ви можете здогадатися з назви, цей метод полягає в тому, щоб представити сторінку. Наприклад, фіксований заголовок на веб-сторінці можна розмістити окремо у спільному файлі перегляду, а потім викликати цим методом на сторінці верстки, наступним чином:
@RenderPage("~/перегляди/спільне/_Header.cshtml")
З параметрами
@RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="you")
Зателефонуйте на сторінку, щоб дізнатися параметри:
Отримайте параметри, передані RenderPage().
@PageData["param"]
3. RenderSection
Сторінка верстки також має концепцію розділу, тобто якщо розділ визначений у шаблоні view, його можна подати окремо наступним чином:
@RenderPage("~/перегляди/спільне/_Header.cshtml")
@RenderBody()
//模板里添加了一个节
@RenderSection(«голова»)
Звісно, також визначте розділ у вигляді, інакше виникне виняток:
@section голова{
//do
}
Щоб уникнути винятків через відсутні розділи, можна задати RenderSection() другий аргумент:
@RenderSection("Підменю", хибно)
або
@if (IsSectionDefined("SubMenu"))
{
@RenderSection("Підменю", хибно)
}
інше
{
<p>Розділ підменю не визначений!</p>
}
4.@Html.Partial
Partial створює власний екземпляр TextWriter щоразу і кешує контент у пам'яті. Нарешті, надішліть весь вивід запису на об'єкт MvcString
Частіше за все ми використовуємо @{ html.RenderPartial("details"); замість @Html. Частково
Різниця між RenderPage() і RenderPartial().
Виклики RenderPage() можуть використовувати його лише для передачі даних.
RenderPartial() може використовувати дані перегляду, модель та інші дані.
Різниця між Html.RenderPartial і Html.RenderAction
Html.RenderPartial підходить для повторюваних UserControls і використовується лише для рендерингу контенту через моделі або для UserControls для реклами. Html.RenderAction спочатку викликає метод Action контролера, якщо цей UserControl потребує отримання даних з бази даних для рендерингу (читання бази даних через Action), цей метод більш підходить для цього часу.
5.Html.Partial("MyView")
Поверніть потік спроби у вигляді MvcHtmlString, дотримуючись стандартних правил маршрутизації.
Рендерить вигляд "MyView" у MvcHtmlString. Він відповідає стандартним правилам пошуку view (тобто перевірити поточний каталог, потім перевірити спільний каталог).
Html.RenderPartial("MyView")

Подібно до Html.Partial(), різниця полягає в тому, що він вводиться безпосередньо на сторінку без кешування. Робить те саме, що й Html.Partial(), але записує свій вихід безпосередньо у потік відповіді. Це ефективніше, оскільки вміст перегляду не буферизований у пам'яті. Однак, оскільки метод не повертає жодних результатів, @Html.RenderPartial("MyView") не працюватиме. Потрібно обгорнути виклик у кодовий блок: @{Html.RenderPartial("MyView"); }.
RenderPage ("MyView.cshtml")

Повертає спеціальний вигляд із шляхами, іменами файлів тощо, і виводить напряму, як Heml.RenderPartial(), без кешування. можна передавати змінні моделі. Рендерить задане видання (ідентифіковане шляхом і ім'ям файлу, а не ім'ям перегляду) безпосередньо у потік відповіді, як Html.RenderPartial(). Ви можете додати будь-яку модель у вигляд, включивши її як другий параметр
RenderPage ("MyView.cshtml",MyModel)

Я віддаю перевагу
@RenderPage("_LayoutHeader.cshtml")Прийом
@{Html.RenderPartial("_LayoutHeader"); }Лише тому, що синтаксис простіший і читабельніший. Окрім цього, здається, немає жодних відмінностей у функціональному плані.





Попередній:ASP.NET---- реалізувати кнопку або посилання для відкриття діалогу входу
Наступний:Встановіть CheckBoxList так, щоб лінія не обгортала
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com