Dalam ASP.NET MVC, apa perbedaan antara:
Html.Partial
danHtml.RenderPartial
Html.Action
danHtml.RenderAction
.net
asp.net-mvc
partial-views
renderpartial
renderaction
Ghooti Farangi
sumber
sumber
Jawaban:
Html.Partial
mengembalikan sebuah String.Html.RenderPartial
panggilanWrite
internal dan kembalivoid
.Penggunaan dasar adalah:
Dalam cuplikan di atas, kedua panggilan akan menghasilkan hasil yang sama.
Sementara seseorang dapat menyimpan output
Html.Partial
dalam variabel atau mengembalikannya dari suatu metode, seseorang tidak dapat melakukan ini denganHtml.RenderPartial
.Hasilnya akan ditulis ke
Response
aliran selama eksekusi / evaluasi.Ini juga berlaku untuk
Html.Action
danHtml.RenderAction
.sumber
Html.Partial()
diciptakan untuk memiliki sintaks yang lebih lancar dengan Razor. Seperti yang dikatakan @Vlad,Html.RenderPartial()
lebih efisien.Pikirkan @ Html.Partial sebagai kode HTML yang disalin ke halaman induk. Pikirkan @ Html.RenderPartial sebagai kontrol pengguna .ascx yang dimasukkan ke halaman induk. Kontrol pengguna .ascx memiliki overhead yang jauh lebih besar.
'@ Html.Partial' mengembalikan string yang disandikan html yang dibuat sesuai dengan induknya. Ini mengakses model orang tua.
'@ Html.RenderPartial' mengembalikan setara dengan kontrol pengguna .ascx. Itu mendapatkan salinannya sendiri dari ViewDataDictionary halaman dan perubahan yang dibuat untuk ViewData RenderPartial tidak mempengaruhi ViewData induknya.
Menggunakan refleksi kami menemukan:
sumber
Partial
merender ke dalam buffer tidak berarti itu dirender secara tidak sinkron - justru sebaliknya - saya tidak dapat melihat bagaimana Anda dapat mengklaimRenderPartial
"lebih intensif sumber daya".Inilah yang saya temukan:
Gunakan RenderAction ketika Anda tidak memiliki model untuk dikirim ke tampilan dan memiliki banyak html untuk mengembalikan yang tidak perlu disimpan dalam variabel.
Gunakan Aksi ketika Anda tidak memiliki model untuk dikirim ke tampilan dan memiliki sedikit teks untuk membawa kembali yang perlu disimpan dalam variabel.
Gunakan RenderPartial ketika Anda memiliki model untuk dikirim ke tampilan dan akan ada banyak html yang tidak perlu disimpan dalam variabel.
Gunakan Parsial ketika Anda memiliki model untuk dikirim ke tampilan dan akan ada sedikit teks yang perlu disimpan dalam variabel.
RenderAction dan RenderPartial lebih cepat.
sumber
Perbedaan adalah yang pertama mengembalikan hasil
MvcHtmlString
tetapi yang kedua (Render..
) langsung ke respons.sumber
Menurut saya
@Html.RenderPartial()
eksekusi lebih cepat daripada@Html.Partial()
karena Html.RenderPartial memberikan respon cepat terhadap Output.Karena ketika saya gunakan
@Html.Partial()
, situs web saya membutuhkan waktu lebih lama untuk memuat dibandingkan@Html.RenderPartial()
sumber
@Html.Partial
dan@Html.RenderPartial
digunakan ketika model tampilan sebagian Anda adalah korespondensi dari model induk, kami tidak perlu membuat metode tindakan apa pun untuk memanggil ini.@Html.Action
dan@Html.RenderAction
digunakan ketika model tampilan parsial Anda terpisah dari model induk, pada dasarnya ini digunakan ketika Anda ingin menampilkan konten jenis widget apa pun di halaman. Anda harus membuat metode tindakan yang mengembalikan hasil tampilan sebagian saat memanggil metode dari tampilan.sumber
Lebih lanjut tentang pertanyaan:
“NerdDinner” dari Professional ASP.NET MVC 1.0
sumber
Tipe kembalinya
Html.RenderAction
adalahvoid
yang berarti secara langsung merender respons dalam tampilan di mana tipe kembalinyaHtml.Action
adalahMvcHtmlString
Anda dapat menangkap tampilan render di controller dan memodifikasinya dengan menggunakan metode berikutIni akan mengembalikan string Html dari View.
Ini juga berlaku untuk
Html.Partial
danHtml.RenderPartial
sumber
Partial or RenderPartial: Tidak perlu membuat metode tindakan. gunakan ketika data yang akan ditampilkan pada tampilan parsial sudah ada dalam model halaman saat ini.
Tindakan atau RenderAction: Membutuhkan metode tindakan anak. gunakan ketika data untuk ditampilkan pada tampilan memiliki model independen.
sumber
Perbedaan:
Jenis pengembalian
RenderPartial
adalahvoid
, di mana sebagaiPartial
pengembalianMvcHtmlString
Sintaks untuk memohon
Partial()
danRenderPartial()
metode dalam tampilan RazorSintaks untuk memohon
Partial()
danRenderPartial()
metode dalam tampilan formulir webBerikut ini adalah 2 pertanyaan wawancara umum terkait
Partial()
danRenderPartial()
Kapan Anda akan menggunakanPartial()
lebihRenderPartial()
dan sebaliknya?Perbedaan utama adalah bahwa
RenderPartial()
mengembalikan void dan output akan ditulis langsung ke aliran output, sedangkanPartial()
metode yang dikembalikanMvcHtmlString
, yang dapat ditugaskan ke variabel dan memanipulasi jika diperlukan. Jadi, ketika ada kebutuhan untuk menetapkan output ke variabel untuk memanipulasinya, kemudian gunakan Partial (), kalau tidak gunakan RenderPartial ().Mana yang lebih baik untuk kinerja?
Dari perspektif kinerja, rendering langsung ke aliran output lebih baik.
RenderPartial()
melakukan hal yang persis sama dan lebih baik untuk kinerja selesaiPartial()
.sumber
Html.Partial
: kembaliMvcHtmlString
dan lambatHtml.RenderPartial
: langsung membuat / menulis pada aliran keluaran dan kembalivoid
dan sangat cepat dibandingkan denganHtml.Partial
sumber
Untuk "sebagian" saya selalu menggunakannya sebagai berikut:
Jika ada sesuatu yang perlu Anda sertakan dalam halaman yang harus Anda lewati melalui pengontrol (seperti yang Anda lakukan dengan panggilan Ajax) kemudian gunakan "Html.RenderPartial".
Jika Anda memiliki 'statis' termasuk yang tidak ditautkan ke controller per-se dan hanya di folder 'bersama' misalnya, gunakan "HTML.partial"
sumber
@Html.Partial
mengembalikan tampilan dalam string yang dikodekan-HTML dan menggunakanTextWriter
objek tampilan yang sama .@Html.RenderPartial
metode ini kembalivoid
.@Html.RenderPartial
lebih cepat dari@Html.Partial
Sintaks untuk
PartialView
:sumber