Składnia Html.RenderPartial () z Razor

95

To działa, ponieważ zwraca wynik częściowego renderowania widoku w ciągu:

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

Ale wolę używać RenderPartiali wydaje mi się, że muszę napisać:

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

zamiast:

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

Aby to zadziałało. Komunikat o błędzie:

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

Czy istnieje lepszy sposób zamiast otwierania bloku kodu @{...}tylko dla jednego wywołania metody?

artvolk
źródło
Jaki jest błąd, który pojawia się podczas próby użycia@Html.RenderPartial()
Neil Knight
Dodałem wiadomość do mojego postu. Rozumiem, dlaczego pokazuje błąd @ Html.RenderPartial () jest analizowany z grubsza jako <%?: @ Html.RenderPartial ()?>, Który jest błędny, a nie jako <? Html.RenderPartial (); ?>, ale szukam obejścia.
artvolk
Powiązane: Html.Partial vs Html.RenderPartial & Html.Action vs Html.RenderAction . BTW, dlaczego wolisz używać RenderPartial?
Paolo Moretti

Odpowiedzi:

142
  • RenderPartial()jest metodą void, która zapisuje w strumieniu odpowiedzi. Metoda void w języku C # wymaga elementu ;i dlatego musi być ujęta w { }.

  • Partial()to metoda, która zwraca MvcHtmlString . W Razor możesz wywołać właściwość lub metodę, która zwraca taki ciąg z tylko @prefiksem, aby odróżnić go od zwykłego kodu HTML, który masz na stronie.

Ofer Zelig
źródło
1
Dlaczego wolisz używać Html.RenderPartial zamiast Html.Partial? Jeśli z jakiegoś powodu chcesz / musisz przejść z Html.RenderPartial, nie ma obejścia - taka jest składnia.
Ofer Zelig
5
Używam go, ponieważ powinien być bardziej skuteczny (ponieważ nie zwraca dużego ciągu).
artvolk
45

Html.RenderPartial () jest metodą void - możesz sprawdzić, czy metoda jest metodą void, umieszczając kursor myszy nad wywołaniem RenderPartial w kodzie, a zobaczysz tekst (rozszerzenie) void HtmlHelper.RenderPartial ...

Metody void wymagają średnika na końcu kodu wywołującego.

W silniku widoku formularzy sieci Web można zamknąć wywołanie Html.RenderPartial () w użądleniach pszczół <%%>

tak

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

gdy używasz aparatu widoku Razor, odpowiednikiem jest

@{Html.RenderPartial("Path/to/my/partial/view");}
Nicholas Murray
źródło
5
„użądlenia pszczoły” - to pierwsze (dla mnie?)
JoeBrockhaus
9
@Html.Partial("NameOfPartialView")
RouR
źródło
Chciałbym skorzystać Html.RenderPartial(), dlatego zadałem to pytanie. Szczegóły: „Jeśli chodzi o wydajność, twierdzono, że renderowanie bezpośrednio do strumienia wyjściowego jest lepsze (dlatego na początku zastosowano void RenderPartial)”. stąd stackoverflow.com/a/2729851/118810
artvolk
0

Jeśli otrzymasz ten format, będzie on przypominał link do innej strony lub innego łącza. Widok częściowy używany głównie do renderowania plików html z jednego miejsca do drugiego.

Sankar
źródło