Вспомогательная функция тега частичного представления в ASP.NET Core
Автор: Скотт Адди (Scott Addie)
Общие сведения о вспомогательных функциях тегов см. в разделе Вспомогательные функции тегов в ASP.NET Core.
Просмотреть или скачать образец кода (описание загрузки)
Обзор
Вспомогательный элемент частичного тега используется для отрисовки частичного представления в Razor приложениях Pages и MVC. Примечания.
- Требуется ASP.NET Core 2.1 или более поздней версии.
- Это альтернатива синтаксиса вспомогательной функции HTML.
- Отрисовка частичного представления выполняется асинхронно.
Параметры вспомогательной функции HTML для отрисовки частичного представления:
В примерах в этом документе используется модель Product:
namespace TagHelpersBuiltIn.Models
{
public class Product
{
public int Number { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
}
Далее следуют атрибуты вспомогательной функции тега частичного представления.
имя
Атрибут name
является обязательным. Она указывает имя или путь для отображения частичного представления, которое будет отрисовано. Если указано имя частичного представления, запускается процесс обнаружения представления. Этот процесс пропускается, если предоставлен явный путь. Все допустимые значения name
см. в разделе Обнаружение частичного представления.
Следующая разметка использует явный путь, указывающий, что _ProductPartial.cshtml
требуется загрузить из общей папки. При использовании атрибута for модель передается в частичное представление для привязки.
<partial name="Shared/_ProductPartial.cshtml" for="Product">
для
Атрибут for
присваивает ModelExpression атрибуту оценку для текущей модели. Класс ModelExpression
выводит синтаксис @Model.
. Например, можно использовать for="Product"
вместо for="@Model.Product"
. Это поведение вывода по умолчанию переопределяется с помощью символа @
для определения встроенного выражения.
Следующая разметка загружается _ProductPartial.cshtml
:
<partial name="_ProductPartial" for="Product">
Частичное представление привязывается к свойству Product
соответствующей модели страницы:
using Microsoft.AspNetCore.Mvc.RazorPages;
using TagHelpersBuiltIn.Models;
namespace TagHelpersBuiltIn.Pages
{
public class ProductModel : PageModel
{
public Product Product { get; set; }
public void OnGet()
{
Product = new Product
{
Number = 1,
Name = "Test product",
Description = "This is a test product"
};
}
}
}
модель
Атрибут model
присваивает экземпляр модели для передачи в частичное представление. Атрибут model
нельзя использовать с атрибутом for.
В следующей разметке создается экземпляр нового объекта Product
, который передается атрибуту model
для привязки:
<partial name="_ProductPartial"
model='new Product { Number = 1, Name = "Test product", Description = "This is a test" }'>
view-data
Атрибут view-data
назначает передачу ViewDataDictionary в частичное представление. В следующей разметке вся коллекция ViewData становится доступной для частичного представления:
@{
ViewData["IsNumberReadOnly"] = true;
}
<partial name="_ProductViewDataPartial" for="Product" view-data="ViewData">
В приведенном выше коде для значения ключа IsNumberReadOnly
устанавливается true
, и значение добавляется в коллекцию ViewData. Следовательно, ViewData["IsNumberReadOnly"]
становится доступно в следующем частичном представлении:
@model TagHelpersBuiltIn.Models.Product
<div class="form-group">
<label asp-for="Number"></label>
@if ((bool)ViewData["IsNumberReadOnly"])
{
<input asp-for="Number" type="number" class="form-control" readonly />
}
else
{
<input asp-for="Number" type="number" class="form-control" />
}
</div>
<div class="form-group">
<label asp-for="Name"></label>
<input asp-for="Name" type="text" class="form-control" />
</div>
<div class="form-group">
<label asp-for="Description"></label>
<textarea asp-for="Description" rows="4" cols="50" class="form-control"></textarea>
</div>
В этом примере значение ViewData["IsNumberReadOnly"]
определяет, будет ли поле Number отображаться только для просмотра.
Перенос из вспомогательного метода HTML
Рассмотрим следующий пример асинхронного вспомогательного метода HTML. Выполняется итерация и отображение коллекции продуктов. PartialAsync
Для первого параметра _ProductPartial.cshtml
метода загружается частичное представление. Экземпляр модели Product
передается в частичное представление для привязки.
@foreach (var product in Model.Products)
{
@await Html.PartialAsync("_ProductPartial", product)
}
Следующая вспомогательная функция тега частичного представления обеспечивает такую же асинхронную подготовку к просмотру, что и вспомогательный метод HTML PartialAsync
. Атрибуту model
назначен экземпляр модели Product
для привязки к частичному представлению.
@foreach (var product in Model.Products)
{
<partial name="_ProductPartial" model="@product" />
}
Дополнительные ресурсы
ASP.NET Core
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по