ASP.NET Core kısmi etiket Yardımcısı

Scott Ade tarafından

Etiket Yardımcıları hakkında genel bilgi için bkz ASP.NET Core etiket yardımcıları ..

Örnek kodu görüntüleme veya indirme (nasıl indirileceği)

Genel Bakış

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

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

Ürün modeli bu belgenin tamamında ö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 bir stoku aşağıda verilmiştir.

name

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 biçimlendirme, _ProductPartial. cshtml 'nin paylaşılan klasörden yükleneceğ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">

:

forÖzniteliği, geçerli modele göre değerlendirilecek bir modelexpression atar. ModelExpressionSözdizimi, sözdizimini anlar @Model. . Örneğin, for="Product" yerine kullanılabilir for="@Model.Product" . Bu varsayılan çıkarım davranışı, @ bir satır içi ifade tanımlamak için simgesi kullanılarak geçersiz kılınır.

Aşağıdaki biçimlendirme _ProductPartial. cshtml'yi yükler:

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

Kısmi görünüm, ilişkili sayfa modelinin Product özelliğine bağlanı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

modelÖzniteliği kısmi görünüme geçirilecek bir model örneği atar. modelÖzniteliği for özniteliğiyle birlikte kullanılamaz.

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

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

verileri görüntüle

view-dataÖzniteliği, kısmi görünüme geçirilecek bir ViewDataDictionary atar. Aşağıdaki biçimlendirme tüm ViewData toplaması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üm içinde 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 okunurdur olarak görüntülenip görüntülenmeyeceğini belirler.

HTML yardımcısından geçiş yapma

Aşağıdaki zaman uyumsuz HTML Yardımcısı örneğini göz önünde bulundurun. Bir ürün koleksiyonu tekrarlandırılır ve görüntülenir. PartialAsyncMetodun ilk parametresine göre _ProductPartial. cshtml kısmi görünümü yüklenir. Modelin bir örneği Product 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ışına erişir PartialAsync . modelÖzniteliğe Product kısmi görünüme bağlama için bir model örneği atanır.

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

Ek kaynaklar