Sintaks Html.RenderP Partial () dengan Razor

95

Ini berfungsi, karena mengembalikan hasil rendering tampilan parsial dalam string:

@Html.Partial("Path/to/my/partial/view")

Tapi saya lebih suka menggunakan RenderPartialdan sepertinya saya perlu menulis:

@{Html.RenderPartial("Path/to/my/partial/view");}

dari pada:

@Html.RenderPartial("Path/to/my/partial/view");

Untuk membuatnya bekerja. Pesan eror:

 Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments

Jika ada cara yang lebih baik daripada membuka blok kode @{...}hanya untuk satu panggilan metode?

artvolk.dll
sumber
Apa kesalahan yang Anda dapatkan ketika Anda mencoba menggunakan@Html.RenderPartial()
Neil Knight
Saya telah menambahkan pesan ke posting saya. Saya mengerti mengapa ini menunjukkan kesalahan @ Html.RenderP Partial () diurai kira-kira sebagai <%?: @ Html.RenderP Partial ()?> Yang salah dan bukan sebagai <? Html.RenderP Partial (); ?>, tapi saya sedang mencari solusi.
artvolk
Terkait: Html.P Partial vs Html.RenderP Partial & Html.Action vs Html.RenderAction . BTW mengapa Anda lebih suka menggunakan RenderPartial?
Paolo Moretti

Jawaban:

142
  • RenderPartial()adalah metode kosong yang menulis ke aliran respons. Metode void, dalam C #, membutuhkan a ;dan karenanya harus ditutup oleh { }.

  • Partial()adalah metode yang mengembalikan MvcHtmlString . Di Razor, Anda dapat memanggil properti atau metode yang mengembalikan string tersebut hanya dengan @awalan untuk membedakannya dari HTML biasa yang Anda miliki di halaman.

Ofer Zelig
sumber
1
Mengapa Anda lebih suka menggunakan Html.RenderP Partial daripada Html.P Partial? Jika Anda, karena alasan tertentu, ingin / perlu menggunakan Html.RenderP Partial, tidak ada solusi - itulah sintaksnya.
Ofer Zelig
5
Saya menggunakannya karena itu harus lebih efektif (karena tidak mengembalikan string besar).
artvolk
45

Html.RenderP Partial () adalah metode void - Anda dapat memeriksa apakah suatu metode adalah metode void dengan mengarahkan mouse ke panggilan ke RenderP Partial dalam kode Anda dan Anda akan melihat teks (ekstensi) kosong HtmlHelper.RenderP Partial ...

Metode kosong memerlukan titik koma di akhir kode panggilan.

Dalam mesin tampilan Formulir Web Anda akan membungkus panggilan Html.RenderP Partial () Anda dalam sengatan lebah <%%>

seperti itu

<% Html.RenderPartial("Path/to/my/partial/view"); %>

bila Anda menggunakan mesin tampilan Razor, yang setara adalah

@{Html.RenderPartial("Path/to/my/partial/view");}
Nicholas Murray
sumber
5
"sengatan lebah" - itu yang pertama (bagi saya?)
JoeBrockhaus
9
@Html.Partial("NameOfPartialView")
RouR
sumber
Saya ingin menggunakan Html.RenderPartial(), itulah mengapa saya menanyakan pertanyaan ini. Detailnya: "Dari segi performa, diklaim bahwa rendering langsung ke aliran keluaran lebih baik (itulah sebabnya mereka menggunakan RenderP Partial untuk memulai)." dari sini stackoverflow.com/a/2729851/118810
artvolk
0

Jika Anda diberi format ini, dibutuhkan seperti tautan ke halaman lain atau tautan lain. Tampilan parsial sebagian besar digunakan untuk mengubah file html dari satu tempat ke tempat lain.

Sankar
sumber