Podpora částečné značky v ASP.NET Core

Scott Addie

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" />
}

Další materiály