Jaki jest właściwy sposób renderowania szablonu podrzędnego?
Jaka jest różnica? Oba wydają się działać dla mnie.
A dlaczego @Html.RenderPartial()
już nie działa?
Odpowiedzi:
Html.Partial("MyView")
Renderuje widok „MyView” do pliku MvcHtmlString
. Jest zgodny ze standardowymi regułami wyszukiwania widoku (tj. Sprawdź bieżący katalog, a następnie sprawdź Shared
katalog).
Html.RenderPartial("MyView")
Działa tak samo, jak Html.Partial()
, z tą różnicą, że zapisuje swoje dane wyjściowe bezpośrednio w strumieniu odpowiedzi. Jest to bardziej wydajne, ponieważ zawartość widoku nie jest buforowana w pamięci. Jednak ponieważ metoda nie zwraca żadnych danych wyjściowych, @Html.RenderPartial("MyView")
nie będzie działać. Trzeba owinąć połączenie w bloku kodu zamiast: @{Html.RenderPartial("MyView");}
.
RenderPage("MyView.cshtml")
Renderuje określony widok (identyfikowany przez ścieżkę i nazwę pliku, a nie przez nazwę widoku) bezpośrednio do strumienia odpowiedzi, na przykład Html.RenderPartial()
. Możesz dostarczyć dowolny model do widoku, dołączając go jako drugi parametr
RenderPage("MyView.cshtml", MyModel)
@Html.Partial("MyView")
vs.@{Html.RenderPartial("MyView");}
RenderPage
? Chcę zagnieździć inną stronę, określając określony parametr zapytania, który z kolei będzie filtrował dane na tej stronie, a ponadto usuwał własny układ.
wolę
@RenderPage("_LayoutHeader.cshtml")
Nad
@{ Html.RenderPartial("_LayoutHeader"); }
Tylko dlatego, że składnia jest łatwiejsza i bardziej czytelna. Poza tym wydaje się, że nie ma żadnych różnic pod względem funkcjonalności.
EDYCJA: Jedną z zalet RenderPartial jest to, że nie musisz określać całej ścieżki ani rozszerzenia pliku, co spowoduje automatyczne przeszukanie wspólnych miejsc.
RenderPage
względu na składnię.
Metoda RenderPartial nie zwraca znaczników HTML, jak większość innych metod pomocniczych. Zamiast tego zapisuje zawartość bezpośrednio w strumieniu odpowiedzi, dlatego musimy nazywać ją pełną linią języka C #, używając średnika.
Jest to nieco bardziej wydajne niż buforowanie renderowanego kodu HTML z częściowego widoku, ponieważ i tak zostanie on zapisany w strumieniu odpowiedzi. Jeśli wolisz bardziej spójną składnię, możesz użyć metody Html.Partial , która działa dokładnie tak samo jak metoda RenderPartial , ale zwraca fragment HTML i może być używana jako @ Html.Partial ("Produkt", p).
@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.