Podpora částečné značky v ASP.NET Core
Přehled pomocníků značek naleznete v tématu Pomocná zařízení značek v ASP.NET Core .
Zobrazit nebo stáhnout ukázkový kód (Jak stáhnout)
Přehled
Pomocník s částečnou značkou se používá pro vykreslování částečného zobrazení na Razor stránkách a aplikacích MVC. Vezměte v úvahu:
- vyžaduje ASP.NET Core 2,1 nebo novější.
- Je alternativou k syntaxi pomocníka HTML.
- Vykreslí částečné zobrazení asynchronně.
Možnosti pomocníka HTML pro vykreslování částečného zobrazení zahrnují:
Produktový model se používá v ukázkách v tomto dokumentu:
namespace TagHelpersBuiltIn.Models
{
public class Product
{
public int Number { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
}
Následuje inventarizace atributů pomocníka částečné značky.
name
name Atribut je vyžadován. Označuje název nebo cestu k částečnému zobrazení, které se má vykreslit. Je-li zadán název částečného zobrazení, je zahájen proces zjišťování zobrazení . Tento proces se obejít, když je zadána explicitní cesta. Všechny přijatelné name hodnoty najdete v tématu zjišťování částečného zobrazení.
Následující kód používá explicitní cestu, která značí, že _ProductPartial. cshtml má být načten ze sdílené složky. Pomocí atributu for je model předán do částečného zobrazení pro vazbu.
<partial name="Shared/_ProductPartial.cshtml" for="Product">
pro
forAtribut přiřadí ModelExpression k vyhodnocení proti aktuálnímu modelu. A ModelExpression odvodí @Model. syntaxi. Například for="Product" lze použít místo for="@Model.Product" . Toto výchozí chování odvození je potlačeno pomocí @ symbolu pro definování vloženého výrazu.
Následující kód načte _ProductPartial. cshtml:
<partial name="_ProductPartial" for="Product">
Částečné zobrazení je vázáno na vlastnost přidruženého modelu stránky 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
modelAtribut přiřadí instanci modelu, aby byla předána částečnému zobrazení. modelAtribut nelze použít s atributem for .
V následujícím kódu Product je vytvořena instance nového objektu a předána do model atributu pro vazbu:
<partial name="_ProductPartial"
model='new Product { Number = 1, Name = "Test product", Description = "This is a test" }'>
zobrazení dat
view-dataAtribut přiřadí objekt ViewDataDictionary , který se má předat částečnému zobrazení. Následující kód zpřístupňuje celou kolekci ViewData pro částečné zobrazení:
@{
ViewData["IsNumberReadOnly"] = true;
}
<partial name="_ProductViewDataPartial" for="Product" view-data="ViewData">
V předchozím kódu IsNumberReadOnly je klíčová hodnota nastavena na true a přidána do kolekce ViewData. V důsledku toho ViewData["IsNumberReadOnly"] je k dispozici v následujícím částečném zobrazení:
@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>
V tomto příkladu hodnota ViewData["IsNumberReadOnly"] Určuje, zda se pole číslo zobrazuje pouze pro čtení.
Migrace z pomocníka jazyka HTML
Zvažte následující příklad asynchronní pomocné rutiny HTML. Kolekce produktů je iterovaná a zobrazená. Na PartialAsync první parametr metody je načteno částečné zobrazení _ProductPartial. cshtml . Instance Product modelu je předána do částečného zobrazení pro vazbu.
@foreach (var product in Model.Products)
{
@await Html.PartialAsync("_ProductPartial", product)
}
Následující pomocník částečné značky dosáhne stejné chování při asynchronním vykreslování jako PartialAsync Pomocník HTML. modelAtributu je přiřazena Product instance modelu pro vazbu k částečnému zobrazení.
@foreach (var product in Model.Products)
{
<partial name="_ProductPartial" model="product" />
}