Apa cara yang tepat untuk merender template anak?
Dan apa bedanya? Keduanya tampaknya berhasil untuk saya.
Dan mengapa tidak @Html.RenderPartial()
lagi berfungsi?
Jawaban:
Html.Partial("MyView")
Merender tampilan "MyView" menjadi MvcHtmlString
. Ini mengikuti aturan standar untuk pencarian tampilan (yaitu, periksa direktori saat ini, lalu periksa Shared
direktori).
Html.RenderPartial("MyView")
Melakukan hal yang sama Html.Partial()
, kecuali menulis outputnya langsung ke aliran respons. Ini lebih efisien, karena konten tampilan tidak di-buffer dalam memori. Namun, karena metode ini tidak mengembalikan keluaran apa pun, @Html.RenderPartial("MyView")
tidak akan berfungsi. Anda harus membungkus panggilan di sebuah blok kode gantinya: @{Html.RenderPartial("MyView");}
.
RenderPage("MyView.cshtml")
Merender tampilan yang ditentukan (diidentifikasi berdasarkan 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)
@Html.Partial("MyView")
vs.@{Html.RenderPartial("MyView");}
RenderPage
? Saya ingin menumpuk halaman yang berbeda dengan menentukan parameter kueri tertentu, yang pada gilirannya akan memfilter data di halaman tersebut, dan sebagai tambahan, menghapus tata letaknya sendiri.
saya lebih memilih
@RenderPage("_LayoutHeader.cshtml")
Lebih
@{ Html.RenderPartial("_LayoutHeader"); }
Hanya karena sintaksnya lebih mudah dan lebih mudah dibaca. Selain itu, tampaknya tidak ada perbedaan fungsionalitas yang bijaksana.
EDIT: Salah satu keuntungan dari RenderP Partial adalah Anda tidak perlu menentukan seluruh jalur atau ekstensi file, ia akan mencari tempat umum secara otomatis.
RenderPage
karena sintaksnya.
The RenderPartial metode tidak kembali HTML markup seperti kebanyakan metode pembantu lainnya. Sebaliknya, ia menulis konten langsung ke aliran respons, itulah sebabnya kita harus menyebutnya seperti baris lengkap C #, menggunakan titik koma.
Ini sedikit lebih efisien daripada buffering HTML yang dirender dari tampilan parsial, karena itu akan tetap ditulis ke aliran respons. Jika Anda lebih suka sintaks lebih konsisten, Anda dapat menggunakan Html.Partial metode, yang tidak persis sama dengan RenderPartial metode, tetapi kembali HTML fragmen dan dapat digunakan sebagai @ Html.Partial ( "Produk", p).
@RenderPages()
Di atas tidak berfungsi di ASP.NET MVC. Ini hanya berfungsi di Halaman Web.
@Html.Partial("_Footer")
Anda harus menggunakan yang di atas di ASP.NET MVC.