ASP.NET Core'da Kısmi Etiket Yardımcısı

Yayınlayan Scott Addie

Etiket Yardımcıları'na genel bakış için, bkz. ASP.NET Core'da Etiket Yardımcıları.

Örnek kodu görüntüleme veya indirme (indirme)

Genel Bakış

Kısmi Etiket Yardımcısı, Sayfalar ve MVC uygulamalarında kısmi bir görünümüRazor işlemek için kullanılır. Bunu göz önünde bulundurun:

  • ASP.NET Core 2.1 veya sonraki bir sürümü gerektirir.
  • HTML Yardımcısı söz dizimine alternatiftir.
  • Kısmi görünümü zaman uyumsuz olarak işler.

Kısmi görünümü işlemeye yönelik HTML Yardımcısı seçenekleri şunlardır:

Ürün modeli, bu belgenin genelindeki örneklerde kullanılır:

namespace TagHelpersBuiltIn.Models
{
    public class Product
    {
        public int Number { get; set; }

        public string Name { get; set; }

        public string Description { get; set; }
    }
}

Kısmi Etiket Yardımcısı özniteliklerinin envanteri aşağıdadır.

ad

name Özniteliği gereklidir. İşlenecek kısmi görünümün adını veya yolunu gösterir. Kısmi bir görünüm adı sağlandığında, görünüm bulma işlemi başlatılır. Açık bir yol sağlandığında bu işlem atlanır. Tüm kabul edilebilir name değerler için bkz . Kısmi görünüm bulma.

Aşağıdaki işaretleme, Paylaşılan klasöründen _ProductPartial.cshtmlyüklendiğini belirten açık bir yol kullanır. for özniteliği kullanılarak bağlama için kısmi görünüme bir model geçirilir.

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

için

özniteliği geçerli for modele göre değerlendirilecek bir ModelExpression atar. A ModelExpression , söz dizimini çıkarsar @Model. . Örneğin, for="Product" yerine for="@Model.Product"kullanılabilir. Bu varsayılan çıkarım davranışı, satır içi ifade tanımlamak için simge kullanılarak @ geçersiz kılınabilir.

Aşağıdaki işaretleme yükler _ProductPartial.cshtml:

<partial name="_ProductPartial" for="Product">

Kısmi görünüm, ilişkili sayfa modelinin Product özelliğine bağlıdır:

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

özniteliği, model kısmi görünüme geçirmek için bir model örneği atar. model özniteliği for özniteliğiyle kullanılamaz.

Aşağıdaki işaretlemede, yeni Product bir nesne örneği oluşturulur ve bağlama özniteliğine model geçirilir:

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

verileri görüntüleme

özniteliği kısmi view-data görünüme geçirmek için bir ViewDataDictionary atar. Aşağıdaki işaretleme, ViewData koleksiyonunun tamamını kısmi görünüm için erişilebilir hale getirir:

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

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

Yukarıdaki kodda IsNumberReadOnly anahtar değeri olarak ayarlanır true ve ViewData koleksiyonuna eklenir. Sonuç olarak, ViewData["IsNumberReadOnly"] aşağıdaki kısmi görünümde erişilebilir hale getirilir:

@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>

Bu örnekte değeri, ViewData["IsNumberReadOnly"] Sayı alanının salt okunur olarak görüntülenip görüntülenmeyeceğini belirler.

HTML Yardımcısı'ndan geçiş

Aşağıdaki zaman uyumsuz HTML Yardımcısı örneğini göz önünde bulundurun. Bir ürün koleksiyonu yinelenir ve görüntülenir. Yöntemin PartialAsync ilk parametresine göre _ProductPartial.cshtml kısmi görünüm yüklenir. Modelin Product bir örneği bağlama için kısmi görünüme geçirilir.

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

Aşağıdaki Kısmi Etiket Yardımcısı, HTML Yardımcısı ile aynı zaman uyumsuz işleme davranışını PartialAsync elde eder. özniteliğine model kısmi görünüme bağlama için bir Product model örneği atanır.

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

Ek kaynaklar