Pembantu Tag Parsial di ASP.NET Core
Oleh Scott Addie
Untuk gambaran umum tentang Pembantu Tag, lihat Pembantu Tag di ASP.NET Core.
Melihat atau mengunduh kode sampel (cara mengunduh)
Gambaran Umum
Pembantu Tag Parsial digunakan untuk merender tampilan parsial di Razor aplikasi Pages dan MVC. Pertimbangkan bahwa itu:
- Memerlukan ASP.NET Core 2.1 atau yang lebih baru.
- Adalah alternatif untuk sintaksIs Pembantu HTML.
- Merender tampilan parsial secara asinkron.
Opsi Pembantu HTML untuk menyajikan tampilan parsial meliputi:
Model Produk digunakan dalam sampel di seluruh dokumen ini:
namespace TagHelpersBuiltIn.Models
{
public class Product
{
public int Number { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
}
Inventaris atribut Pembantu Tag Parsial mengikutinya.
nama
Atribut name
tersebut diperlukan. Ini menunjukkan nama atau jalur tampilan parsial yang akan dirender. Saat nama tampilan parsial disediakan, proses penemuan tampilan dimulai. Proses itu dilewati ketika jalur eksplisit disediakan. Untuk semua nilai yang dapat name
diterima, lihat Penemuan tampilan parsial.
Markup berikut menggunakan jalur eksplisit, yang menunjukkan bahwa _ProductPartial.cshtml
akan dimuat dari folder Bersama . Menggunakan untuk atribut, model diteruskan ke tampilan parsial untuk pengikatan.
<partial name="Shared/_ProductPartial.cshtml" for="Product">
untuk
Atribut for
menetapkan ModelExpression untuk dievaluasi terhadap model saat ini. Menyimpulkan ModelExpression
@Model.
sintaks. Misalnya, for="Product"
dapat digunakan alih-alih for="@Model.Product"
. Perilaku inferensi default ini ditimpa dengan menggunakan @
simbol untuk menentukan ekspresi sebaris.
Markup berikut dimuat _ProductPartial.cshtml
:
<partial name="_ProductPartial" for="Product">
Tampilan parsial terikat ke properti model Product
halaman terkait:
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
menetapkan instans model untuk diteruskan ke tampilan parsial. Atribut model
tidak dapat digunakan dengan atribut untuk .
Dalam markup berikut, objek baru Product
dibuat dan diteruskan ke model
atribut untuk pengikatan:
<partial name="_ProductPartial"
model='new Product { Number = 1, Name = "Test product", Description = "This is a test" }'>
data tampilan
Atribut view-data
menetapkan untuk diteruskan ke tampilan parsial ViewDataDictionary . Markup berikut membuat seluruh koleksi ViewData dapat diakses oleh tampilan parsial:
@{
ViewData["IsNumberReadOnly"] = true;
}
<partial name="_ProductViewDataPartial" for="Product" view-data="ViewData">
Dalam kode sebelumnya, IsNumberReadOnly
nilai kunci diatur ke true
dan ditambahkan ke koleksi ViewData. Akibatnya, ViewData["IsNumberReadOnly"]
dapat diakses dalam tampilan parsial berikut:
@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>
Dalam contoh ini, nilai ViewData["IsNumberReadOnly"]
menentukan apakah bidang Angka ditampilkan sebagai baca saja.
Bermigrasi dari Pembantu HTML
Pertimbangkan contoh Pembantu HTML asinkron berikut. Kumpulan produk diulang dan ditampilkan. PartialAsync
Sesuai parameter pertama metode, _ProductPartial.cshtml
tampilan parsial dimuat. Instans model diteruskan Product
ke tampilan parsial untuk pengikatan.
@foreach (var product in Model.Products)
{
@await Html.PartialAsync("_ProductPartial", product)
}
Pembantu Tag Parsial berikut mencapai perilaku penyajian asinkron yang sama dengan Pembantu PartialAsync
HTML. Atribut model
diberi Product
instans model untuk mengikat tampilan parsial.
@foreach (var product in Model.Products)
{
<partial name="_ProductPartial" model="@product" />
}
Sumber Daya Tambahan:
ASP.NET Core
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk