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?


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.


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");}

5
„użądlenia pszczoły” - to pierwsze (dla mnie?)
JoeBrockhaus

9
@Html.Partial("NameOfPartialView")

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.