Pomocná rutina částečné značky v jádru ASP.NET

Autor: Scott Addie

Přehled pomocných rutin značek najdete v tématu Pomocné rutiny značek v ASP.NET Core.

Zobrazení nebo stažení ukázkového kódu (postup stažení)

Přehled

Pomocná rutina částečné značky slouží k vykreslení částečného zobrazení v Razor aplikacích Pages a MVC. Vezměte v úvahu, že:

  • Vyžaduje ASP.NET Core 2.1 nebo novější.
  • Je alternativou k syntaxi pomocné rutiny HTML.
  • Vykreslí částečné zobrazení asynchronně.

Mezi možnosti pomocné rutiny HTML pro vykreslení částečného zobrazení patří:

Model Produktu 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 inventář pomocných atributů částečné značky.

Název

name Atribut je vyžadován. Označuje název nebo cestu částečného zobrazení, které se má vykreslit. Po zadání názvu částečného zobrazení se zahájí proces zjišťování zobrazení. Tento proces se vynechá, když je k dispozici explicitní cesta. Všechny přijatelné name hodnoty najdete v části Částečné zjišťování zobrazení.

Následující kód používá explicitní cestu, která označuje, že _ProductPartial.cshtml se má načíst ze sdílené složky. Pomocí atributu for se model předá částečnému zobrazení vazby.

<partial name="Shared/_ProductPartial.cshtml" for="Product">

pro

Atribut for přiřadí ModelExpression k vyhodnocení aktuálního modelu. Odvozuje ModelExpression syntaxi @Model. . for="Product" Například lze použít místo for="@Model.Product". Toto výchozí chování odvozování se přepíše pomocí symbolu @ k 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ázané na vlastnost přidruženého Product modelu stránky:

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

Atribut model přiřadí instanci modelu, která se má předat do částečného zobrazení. Atribut model nelze použít s atributem for .

V následujícím kódu se vytvoří instance nového Product objektu a předá se atributu model pro vazbu:

<partial name="_ProductPartial"
         model='new Product { Number = 1, Name = "Test product", Description = "This is a test" }'>

view-data

Atribut view-data přiřadí ViewDataDictionary k předání částečnému zobrazení. Následující kód zpřístupňuje celou kolekci ViewData k částečnému zobrazení:

@{
    ViewData["IsNumberReadOnly"] = true;
}

<partial name="_ProductViewDataPartial" for="Product" view-data="ViewData">

V předchozím kódu IsNumberReadOnly je hodnota klíče nastavena true a přidána do kolekce ViewData. V důsledku toho ViewData["IsNumberReadOnly"] je přístupný 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 je pole Číslo zobrazeno jako jen pro čtení.

Migrace z pomocné rutiny HTML

Podívejte se na následující příklad asynchronního pomocníka HTML. Kolekce produktů je iterated a zobrazena. PartialAsync Na první parametr _ProductPartial.cshtml metody se načte částečné zobrazení. Instance Product modelu se předá částečnému zobrazení vazby.

@foreach (var product in Model.Products)
{
    @await Html.PartialAsync("_ProductPartial", product)
}

Následující pomocná rutina částečné značky dosahuje stejného asynchronního PartialAsync vykreslování jako pomocník HTML. Atribut model je přiřazen Product instanci modelu pro vazbu k částečnému zobrazení.

@foreach (var product in Model.Products)
{
    <partial name="_ProductPartial" model="@product" />
}

Další prostředky