Pomocnik tagów częściowych w ASP.NET Core
Autor: Scott Addie
Aby zapoznać się z omówieniem pomocników tagów, zobacz Pomocnicy tagów na platformie ASP.NET Core.
Wyświetl lub pobierz przykładowy kod (jak pobrać)
Omówienie
Pomocnik tagów częściowych służy do renderowania widoku częściowego w Razor aplikacjach Pages i MVC. Należy wziąć pod uwagę, że:
- Wymaga ASP.NET Core 2.1 lub nowszej.
- Jest alternatywą dla składni pomocnika HTML.
- Renderuje widok częściowy asynchronicznie.
Opcje pomocnika HTML do renderowania widoku częściowego obejmują:
Model produktu jest używany w przykładach w tym dokumencie:
namespace TagHelpersBuiltIn.Models
{
public class Product
{
public int Number { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
}
Poniżej przedstawiono spis atrybutów pomocnika tagów częściowych.
name
name
Atrybut jest wymagany. Wskazuje nazwę lub ścieżkę widoku częściowego do renderowania. Po podaniu częściowej nazwy widoku inicjowany jest proces odnajdywania widoku. Ten proces jest pomijany po podaniu jawnej ścieżki. Aby uzyskać wszystkie dopuszczalne name
wartości, zobacz Odnajdywanie widoku częściowego.
Poniższy znacznik używa jawnej ścieżki wskazującej, że _ProductPartial.cshtml
ma zostać załadowany z folderu Udostępnione. Za pomocą atrybutu for model jest przekazywany do widoku częściowego do powiązania.
<partial name="Shared/_ProductPartial.cshtml" for="Product">
for
Atrybut for
przypisuje ModelExpression element do oceny względem bieżącego modelu. Wywnioskuje ModelExpression
składnię @Model.
. Można na przykład for="Product"
użyć zamiast for="@Model.Product"
. To domyślne zachowanie wnioskowania jest zastępowane przy użyciu symbolu @
w celu zdefiniowania wyrażenia wbudowanego.
Następujące znaczniki są ładowane _ProductPartial.cshtml
:
<partial name="_ProductPartial" for="Product">
Widok częściowy jest powiązany z właściwością skojarzonego modelu Product
strony:
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
Atrybut model
przypisuje wystąpienie modelu do przekazania do widoku częściowego. Atrybut model
nie może być używany z atrybutem for .
W poniższym znaczniku nowy Product
obiekt jest tworzone i przekazywany do atrybutu model
do powiązania:
<partial name="_ProductPartial"
model='new Product { Number = 1, Name = "Test product", Description = "This is a test" }'>
view-data
Atrybut view-data
przypisuje ViewDataDictionary element do przekazania do widoku częściowego. Poniższy znacznik sprawia, że cała kolekcja ViewData jest dostępna dla widoku częściowego:
@{
ViewData["IsNumberReadOnly"] = true;
}
<partial name="_ProductViewDataPartial" for="Product" view-data="ViewData">
W poprzednim kodzie IsNumberReadOnly
wartość klucza jest ustawiana na true
i dodawana do kolekcji ViewData. ViewData["IsNumberReadOnly"]
W związku z tym program jest dostępny w następującym widoku częściowym:
@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>
W tym przykładzie wartość ViewData["IsNumberReadOnly"]
określa, czy pole Liczba jest wyświetlane jako tylko do odczytu.
Migrowanie z pomocnika HTML
Rozważmy następujący asynchroniczny przykład pomocnika HTML. Kolekcja produktów jest iteracja i wyświetlana. PartialAsync
Na pierwszy parametr _ProductPartial.cshtml
metody jest ładowany widok częściowy. Wystąpienie Product
modelu jest przekazywane do widoku częściowego do powiązania.
@foreach (var product in Model.Products)
{
@await Html.PartialAsync("_ProductPartial", product)
}
Poniższy pomocnik tagów częściowych osiąga to samo zachowanie asynchroniczne renderowania co PartialAsync
pomocnik HTML. Atrybut model
jest przypisywany Product
do wystąpienia modelu do powiązania z widokiem częściowym.
@foreach (var product in Model.Products)
{
<partial name="_ProductPartial" model="@product" />
}
Dodatkowe zasoby
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla