W ASP.NET MVC jaka jest różnica między:
Html.Partial
iHtml.RenderPartial
Html.Action
iHtml.RenderAction
.net
asp.net-mvc
partial-views
renderpartial
renderaction
Ghooti Farangi
źródło
źródło
Odpowiedzi:
Html.Partial
zwraca ciąg.Html.RenderPartial
dzwoniWrite
wewnętrznie i zwracavoid
.Podstawowym zastosowaniem jest:
W powyższym fragmencie oba wywołania przyniosą ten sam wynik.
Chociaż można przechowywać dane wyjściowe
Html.Partial
w zmiennej lub zwrócić je z metody, nie można tego zrobić za pomocąHtml.RenderPartial
.Wynik zostanie zapisany w
Response
strumieniu podczas wykonywania / oceny.Dotyczy to również
Html.Action
iHtml.RenderAction
.źródło
Html.Partial()
został stworzony, aby mieć bardziej płynną składnię z Razor. Jak powiedział @Vlad,Html.RenderPartial()
jest bardziej wydajny.Pomyśl o @ Html.Partial jak o kodzie HTML skopiowanym na stronę nadrzędną. Pomyśl o @ Html.RenderPartial jako o kontroli użytkownika .ascx wbudowanej w stronę nadrzędną. Kontrola użytkownika .ascx ma znacznie większy narzut.
„@ Html.Partial” zwraca ciąg znaków zakodowany w formacie HTML, który jest konstruowany w jednej linii z elementem nadrzędnym. Uzyskuje dostęp do modelu rodzica.
„@ Html.RenderPartial” zwraca równowartość kontroli użytkownika .ascx. Pobiera własną kopię ViewDataDictionary strony, a zmiany wprowadzone w ViewData obiektu RenderPartial nie wpływają na ViewData rodzica.
Za pomocą refleksji znajdujemy:
źródło
Partial
renderowanie do bufora nie oznacza, że jest renderowane asynchronicznie - wręcz przeciwnie - nie widzę, jak można twierdzić, żeRenderPartial
„wymaga więcej zasobów”.Oto, co znalazłem:
Użyj RenderAction, jeśli nie masz modelu do wysłania do widoku i masz dużo kodu HTML do przywrócenia, który nie musi być przechowywany w zmiennej.
Użyj akcji, gdy nie masz modelu do wysłania do widoku i masz trochę tekstu do przywrócenia, który musi być przechowywany w zmiennej.
Użyj RenderPartial, jeśli masz model do wysłania do widoku, a będzie dużo html, który nie musi być przechowywany w zmiennej.
Użyj Częściowe, gdy masz model do wysłania do widoku, a będzie trochę tekstu, który musi być przechowywany w zmiennej.
RenderAction i renderPartial są szybsze.
źródło
Różnica polega na tym, że pierwszy zwraca bezpośrednio odpowiedź,
MvcHtmlString
ale drugi (Render..
).źródło
Według mnie
@Html.RenderPartial()
ma szybsze wykonanie niż z@Html.Partial()
powodu HTML.RenderPartial daje szybką odpowiedź na Wyjście.Ponieważ kiedy korzystam
@Html.Partial()
, ładowanie mojej witryny zajmuje więcej czasu niż@Html.RenderPartial()
źródło
@Html.Partial
i@Html.RenderPartial
są używane, gdy model widoku częściowego odpowiada modelowi nadrzędnemu, nie musimy tworzyć żadnej metody działania, aby to wywołać.@Html.Action
i@Html.RenderAction
są używane, gdy model częściowego widoku jest niezależny od modelu nadrzędnego. Zasadniczo jest on używany, gdy chcesz wyświetlić zawartość dowolnego typu widżetu na stronie. Musisz utworzyć metodę akcji, która zwróci wynik częściowego widoku podczas wywoływania metody z widoku.źródło
Więcej na temat pytania:
„NerdDinner” z Professional ASP.NET MVC 1.0
źródło
Typ powrót
Html.RenderAction
jestvoid
to znaczy, że bezpośrednio powoduje, że reakcje w widoku, w którym typ powrótHtml.Action
jestMvcHtmlString
można pochwycić renderowania widok kontrolera i modyfikować za pomocą następującej metodyTo zwróci ciąg HTML widoku.
Dotyczy to również
Html.Partial
iHtml.RenderPartial
źródło
Częściowy lub renderujący: Nie ma potrzeby tworzenia metody akcji. użyj, gdy dane do wyświetlenia w widoku częściowym są już obecne w modelu bieżącej strony.
Akcja lub czynność renderowania: Wymaga metody akcji podrzędnej. używaj, gdy dane do wyświetlenia w widoku mają niezależny model.
źródło
Różnice:
Typem zwracanym
RenderPartial
jestvoid
, gdzie jakPartial
zwracaMvcHtmlString
Składnia wywoływania
Partial()
iRenderPartial()
metody w widokach RazorSkładnia wywoływania
Partial()
iRenderPartial()
metody w widokach formularzy internetowychPoniżej znajdują się 2 wspólne kwestie związane z wywiadu
Partial()
iRenderPartial()
kiedy należy użyćPartial()
ponadRenderPartial()
i vice versa?Główną różnicą jest to, że
RenderPartial()
zwraca void, a dane wyjściowe zostaną zapisane bezpośrednio w strumieniu wyjściowym, gdzie jakoPartial()
metoda powracaMvcHtmlString
, którą można przypisać do zmiennej i w razie potrzeby manipulować nią. Tak więc, gdy istnieje potrzeba przypisania wyniku do zmiennej w celu manipulowania nią, użyj Partial (), w przeciwnym razie użyj RenderPartial ().Który z nich jest lepszy pod względem wydajności?
Z punktu widzenia wydajności lepsze jest renderowanie bezpośrednio do strumienia wyjściowego.
RenderPartial()
robi dokładnie to samo i jest lepszy pod względem wydajnościPartial()
.źródło
Html.Partial
: powracaMvcHtmlString
i powoliHtml.RenderPartial
: bezpośrednio renderuje / zapisuje strumień wyjściowy i zwraca,void
i jest bardzo szybki w porównaniu doHtml.Partial
źródło
W przypadku „częściowego” zawsze używam go w następujący sposób:
Jeśli jest coś, co musisz zawrzeć na stronie, którą musisz przejść przez kontroler (tak jak w przypadku wywołania Ajax), użyj „Html.RenderPartial”.
Jeśli masz dołączenie „statyczne”, które nie jest powiązane z kontrolerem jako takim i tylko na przykład w folderze „udostępnionym”, użyj „HTML.partial”
źródło
@Html.Partial
zwraca widok w łańcuchu HTML i używa tego samegoTextWriter
obiektu widoku .@Html.RenderPartial
ta metoda zwracavoid
.@Html.RenderPartial
jest szybszy niż@Html.Partial
Składnia dla
PartialView
:źródło