1. RenderBody Di mesin Razor, tidak ada "halaman master", melainkan halaman yang disebut "tata letak" (_Layout.cshtml) ditempatkan di folder tampilan bersama. Di halaman ini, Anda akan melihat pernyataan di tag: @RenderBody() Faktanya, ini bekerja mirip dengan kontrol server di halaman master, ketika tampilan berdasarkan halaman tata letak ini dibuat, konten tampilan digabungkan dengan halaman tata letak, dan konten tampilan yang baru dibuat dirender di antara label melalui metode @RenderBody() halaman tata letak. Metode ini tidak memerlukan parameter dan hanya dapat muncul sekali. 2. RenderHalaman Seperti yang dapat Anda tebak dari namanya, metode ini adalah menyajikan halaman. Misalnya, header tetap di halaman web dapat ditempatkan secara terpisah dalam file tampilan bersama, lalu dipanggil dalam metode ini di halaman tata letak, sebagai berikut: @RenderPage("~/Tampilan/Dibagikan/_Header.cshtml") Dengan parameter @RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="you") Panggil halaman untuk mendapatkan parameter: Dapatkan parameter yang diteruskan oleh RenderPage(). @PageData["param"] 3. Render Bagian Halaman tata letak juga memiliki konsep bagian, yaitu jika bagian didefinisikan dalam templat tampilan, itu dapat disajikan secara terpisah dengan cara berikut: @RenderPage("~/Tampilan/Dibagikan/_Header.cshtml") @RenderBody()
//模板里添加了一个节 @RenderSection("kepala") Tentu saja, tentukan juga bagian dalam tampilan, jika tidak, pengecualian akan terjadi: @section kepala{
//do
} Untuk mencegah pengecualian karena bagian yang hilang, Anda dapat memberikan argumen kedua kepada RenderSection(): @RenderSection("SubMenu", false) atau @if (IsSectionDefined("SubMenu"))
{ @RenderSection("SubMenu", false)
} yang lain
{ <p>Bagian SubMenu tidak didefinisikan!</p>
}
4.@Html.Partial Partial membuat instans TextWriter sendiri setiap kali dan menyimpan konten dalam cache dalam memori. Terakhir, kirim semua output penulis ke objek MvcString Lebih sering daripada tidak, kita akan menggunakan @{ html.RenderPartial("details"); alih-alih @Html.Partial Perbedaan antara RenderPage() dan RenderPartial(). Panggilan RenderPage() hanya dapat menggunakannya untuk meneruskan data sebelumnya. RenderPartial() dapat menggunakan viewdata, model, dan data lainnya. Perbedaan antara Html.RenderPartial dan Html.RenderAction Html.RenderPartial cocok untuk UserControl berulang, dan hanya perlu digunakan untuk merender konten melalui model, atau untuk UserControls untuk iklan. Html.RenderAction pertama-tama akan memanggil metode Controller's Action, jika UserControl ini perlu mendapatkan data dari database untuk dirender (baca database melalui Action), metode ini lebih cocok untuk kali ini. 5.Html.Sebagian ("Tampilan Saya") Mengembalikan aliran percobaan sebagai MvcHtmlString, mengikuti aturan perutean standar. Merender tampilan "MyView" ke MvcHtmlString. Ini mengikuti aturan standar untuk pencarian tampilan (yaitu periksa direktori saat ini, lalu periksa direktori Bersama). Html.RenderPartial("MyView")
Mirip dengan Html.Partial(), perbedaannya adalah diketik langsung ke halaman tanpa caching. Melakukan hal yang sama seperti Html.Partial(), kecuali bahwa ia menulis outputnya langsung ke aliran respons. Ini lebih efisien, karena konten tampilan tidak di-buffer dalam memori. Namun, karena metode ini tidak mengembalikan output apa pun, @Html.RenderPartial("MyView") tidak akan berfungsi. Anda harus membungkus panggilan dalam blok kode sebagai gantinya: @{Html.RenderPartial("MyView"); }. RenderPage("MyView.cshtml")
Mengembalikan tampilan khusus dengan jalur, nama file, dll., dan output langsung seperti Heml.RenderPartial() tanpa caching. variabel model dapat dilewati. Merender tampilan yang ditentukan (diidentifikasi dengan jalur dan nama file, bukan dengan nama tampilan) langsung ke aliran respons, seperti Html.RenderPartial(). Anda dapat menyediakan model apa pun yang Anda suka ke tampilan dengan memasukkannya sebagai parameter kedua RenderPage("MyView.cshtml",MyModel)
Saya lebih suka
@RenderPage("_LayoutHeader.cshtml")Lebih dari @{Html.RenderPartial("_LayoutHeader"); }Hanya karena sintaksnya lebih mudah dan lebih mudah dibaca. Selain itu, tampaknya tidak ada perbedaan fungsionalitas.
|