Razor ile Html.RenderPartial () sözdizimi


95

Bu çalışır, çünkü bir dizede kısmi görünüm oluşturmanın sonucunu döndürür:

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

Ama kullanmayı tercih ediyorum RenderPartialve öyle görünüyor ki yazmam gerekiyor:

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

onun yerine:

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

Çalışması için. Hata mesajı:

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

Kod bloğunu @{...}sadece bir yöntem çağrısı için açmak yerine daha iyi bir yol varsa ?


@Html.RenderPartial()
Neil Knight

Mesajıma mesaj ekledim. Neden bir hata gösterdiğini anlıyorum @ Html.RenderPartial () kabaca <%?: @ Html.RenderPartial ()?> Olarak ayrıştırılır, bu da <? Html.RenderPartial (); ?>, ancak bir çözüm arıyorum.
artvolk

İlgili: Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction . BTW neden kullanmayı tercih ediyorsunuz RenderPartial?
Paolo Moretti

Yanıtlar:


142
  • RenderPartial()yanıt akışına yazan bir void yöntemidir . Bir void yöntemi, C # ' ;da a'ya ihtiyaç duyar ve bu nedenle içine alınmalıdır { }.

  • Partial()MvcHtmlString döndüren bir yöntemdir . Razor'da, @sayfanızdaki düz HTML'den ayırt etmek için yalnızca bir önekle böyle bir dizeyi döndüren bir özelliği veya yöntemi çağırabilirsiniz .


1
Html.Partial yerine neden Html.RenderPartial kullanmayı tercih ediyorsunuz? Herhangi bir nedenle Html.RenderPartial ile devam etmek istiyorsanız / buna ihtiyaç duyuyorsanız, geçici bir çözüm yoktur - bu sözdizimidir.
Ofer Zelig

5
Kullanıyorum çünkü daha etkili olması gerekiyor (çünkü çok büyük bir dizge döndürmüyor).
artvolk

45

Html.RenderPartial () bir void yöntemidir - farenizi kodunuzdaki RenderPartial çağrısının üzerine getirerek bir yöntemin geçersiz bir yöntem olup olmadığını kontrol edebilirsiniz ve HtmlHelper.RenderPartial ...

Void yöntemleri, çağıran kodun sonunda bir noktalı virgül gerektirir.

Webforms görünüm motorunda, Html.RenderPartial () çağrınızı arı sokmalarının <%%> içine yerleştirirdiniz

öyle gibi

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

Razor görünüm motorunu kullandığınızda, eşdeğer

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

5
"arı sokmaları" - bu bir ilk (benim için mi?)
JoeBrockhaus

9
@Html.Partial("NameOfPartialView")

Kullanmak istiyorum Html.RenderPartial(), bu yüzden bu soruyu sordum. Ayrıntılar: "Performans açısından, doğrudan çıktı akışına işlemenin daha iyi olduğu iddia edildi (bu nedenle başlangıçta RenderPartial boşluğuna gittiler)." buradan stackoverflow.com/a/2729851/118810
artvolk

0

Size bu format verilirse, başka bir sayfaya bağlantı veya başka bir bağlantı gibi kullanılır. Kısmi görünüm esas olarak html dosyalarını bir yerden diğerine işlemek için kullanılır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.