@ Html.Partial () vs @RenderPage()

Jaki jest odpowiedni sposób renderowania szablonu podrzędnego?

A co za różnica? Oba wydają się działać dla mnie.

I dlaczego @Html.RenderPartial() już nie działa?

Author: Ehsan Sajjad, 2010-12-21

5 answers

Html.Partial("MyView")

Renderuje widok "MyView" na MvcHtmlString. Postępuje zgodnie ze standardowymi regułami wyszukiwania widoku (np. sprawdź bieżący katalog, a następnie sprawdź katalog Shared).

Html.RenderPartial("MyView")

Robi to samo co Html.Partial(), z tą różnicą, że zapisuje swoje wyjście bezpośrednio do strumienia odpowiedzi. Jest to bardziej efektywne, ponieważ zawartość widoku nie jest buforowana w pamięci. Jednakże, ponieważ metoda nie zwraca żadnego wyjścia, @Html.RenderPartial("MyView") nie będzie działać. Zamiast tego musisz zawinąć połączenie w blok kodu: @{Html.RenderPartial("MyView");}.

RenderPage("MyView.cshtml")

Renderuje określony widok (identyfikowany ścieżką i nazwą pliku, a nie nazwą widoku) bezpośrednio do strumienia odpowiedzi, Jak Html.RenderPartial(). Możesz dostarczyć dowolny model do widoku, włączając go jako drugi parametr

RenderPage("MyView.cshtml", MyModel)
 121
Author: Annabelle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-03 05:38:31

Wolę

@RenderPage("_LayoutHeader.cshtml")

Over

@{ Html.RenderPartial("_LayoutHeader"); }

Tylko dlatego, że składnia jest łatwiejsza i bardziej czytelna. Poza tym nie wydaje się być żadnych różnic funkcjonalności mądry.

Edit: jedną z zalet RenderPartial jest to, że nie musisz podawać całej ścieżki lub rozszerzenia pliku.

 16
Author: Ryan Sampson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-21 17:52:53

Metoda RenderPartial nie zwraca znaczników HTML, jak większość innych metod pomocniczych. Zamiast tego pisze zawartość bezpośrednio do strumienia odpowiedzi, dlatego musimy wywołać ją jak pełną linię C#, używając średnika.

Jest to nieco bardziej wydajne niż buforowanie renderowanego HTML z częściowego widoku, ponieważ będzie on zapisywany do w każdym razie strumień odpowiedzi. Jeśli wolisz bardziej spójną składnię, możesz użyć Html.Metoda częściowa , która czy dokładnie tak samo jak Metoda RenderPartial , ale zwraca fragment HTML i może być użyty jako @ Html.Częściowy ("produkt", p).

 6
Author: Omid Shariati,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-26 06:53:33

Możemy również przekazać model używając częściowych widoków. @ Html.Partial("MyView", "MyModel");

 2
Author: bayram,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-12 21:43:52
@RenderPages() 

Powyższe nie działa w ASP.NET MVC. Działa tylko na stronach internetowych.

@Html.Partial("_Footer")

Będziesz musiał użyć powyższego w ASP.NET MVC.

 0
Author: Umar Aftab,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-26 02:38:51