Вспомогательная функция тега частичного представления в 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 жүйесін мазмұнға арналған кері байланыс механизмі ретінде біртіндеп қолданыстан шығарамыз және оны жаңа кері байланыс жүйесімен ауыстырамыз. Қосымша ақпаратты мұнда қараңыз:Жіберу және пікірді көру