Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 13486|Odpowiedź: 0

[ASP.NET] @RenderBody、@RenderSection、@RenderPage、Html.RenderPartial、Html.RenderActi...

[Skopiuj link]
Opublikowano 19.07.2015 23:37:53 | | |
1. RenderBody
W silniku Razor nie ma "strony głównej", zamiast tego w folderze współdzielonym widoku umieszczana jest strona o nazwie "layout" (_Layout.cshtml). Na tej stronie zobaczysz oświadczenie w tagu:
@RenderBody()
W rzeczywistości działa podobnie do sterowania serwerem na stronie głównej – gdy tworzy się widok na podstawie tej strony układu, zawartość widoku jest scalana ze stroną ułożenia, a zawartość nowo utworzonego widoku jest renderowana pomiędzy etykietami za pomocą metody @RenderBody() strony układu.
Ta metoda nie wymaga parametrów i może pojawić się tylko raz.
2. RenderPage
Jak można się domyślić po nazwie, ta metoda polega na przedstawieniu strony. Na przykład stały nagłówek na stronie internetowej można umieścić osobno w pliku widoku wspólnego, a następnie wywołać w ten sposób na stronie układu, w następujący sposób:
@RenderPage("~/Widoki/Udostępnione/_Header.cshtml")
Z parametrami
@RenderPage("~/Views/Shared/_Header.cshtml",new{parm="my",parm2="you")
Zadzwoń do strony, aby uzyskać parametry:
Uzyskaj parametry przekazywane przez RenderPage().
@PageData["param"]
3. RenderSekcja
Strona z układem zawiera także koncepcję sekcji, czyli jeśli sekcja jest zdefiniowana w szablonie widoku, może być przedstawiona osobno w następujący sposób:
@RenderPage("~/Widoki/Udostępnione/_Header.cshtml")
@RenderBody()
//模板里添加了一个节
@RenderSection("głowa")
Oczywiście zdefiniuj też przekroj w widoku, w przeciwnym razie wystąpi wyjątek:
@section head{
//do
}
Aby zapobiec wyjątkom z powodu brakujących sekcji, możesz podać RenderSection() drugi argument:
@RenderSection("SubMenu", fałszywe)
lub
@if (IsSectionDefined("SubMenu"))
{
@RenderSection("SubMenu", fałszywe)
}
else
{
<p>Sekcja Podmenu nie jest zdefiniowana!</p>
}
4.@Html.Partial
Partial tworzy własną instancję TextWritera za każdym razem i zapamiętuje zawartość w pamięci. Na koniec wyślij wszystkie wyjścia zapisujące do obiektu MvcString
Najczęściej używamy @{ html.RenderPartial("details"); zamiast @Html. Częściowe
Różnica między RenderPage() a RenderPartial().
Wywołania RenderPage() mogą używać go tylko do przekazywania danych dalej.
RenderPartial() może korzystać z viewdata, modelu i innych danych.
Różnica między Html.RenderPartial a Html.RenderAction
Html.RenderPartial nadaje się do powtarzających się UserControls i wystarczy go używać do renderowania treści przez modele lub do UserControls dla reklam. Html.RenderAction najpierw wywoła metodę Action's Controller, jeśli ten UserControl musi pobrać dane z bazy danych do renderowania (odczytać bazę danych przez Action), ta metoda jest bardziej odpowiednia w tym czasie.
5.Html.Partial("MyView")
Zwróć strumień prób jako MvcHtmlString, zgodnie ze standardowymi regułami routingu.
Renderuje widok "MyView" na ciąg MvcHtmlString. Stosuje standardowe zasady wyszukiwania widoków (czyli sprawdzaj aktualny katalog, a następnie katalog współdzielony).
Html.RenderPartial("MyView")

Podobnie jak w Html.Partial(), różnica polega na tym, że jest wpisywany bezpośrednio na stronie bez buforowania. 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ż treść widoku nie jest buforowana w pamięci. Jednak ponieważ metoda nie zwraca żadnego wyjścia, @Html.RenderPartial("MyView") nie działa. Zamiast tego musisz owinąć wywołanie blokiem kodu: @{Html.RenderPartial("MyView"); }.
RenderPage("MyView.cshtml")

Zwraca specjalny widok ze ścieżkami, nazwami plików itp. i generuje bezpośrednio jak Heml.RenderPartial() bez buforowania. zmienne modelu mogą być przekazywane. Renderuje określony widok (oznaczony ścieżką i nazwą pliku, a nie nazwą widoku) bezpośrednio do strumienia odpowiedzi, podobnie jak Html.RenderPartial(). Możesz dostarczyć dowolny model do widoku, dodając go jako drugi parametr
RenderPage("MyView.cshtml",MyModel)

Wolę
@RenderPage("_LayoutHeader.cshtml")Odbiór
@{Html.RenderPartial("_LayoutHeader"); }Tylko dlatego, że składnia jest łatwiejsza i bardziej czytelna. Poza tym nie wydaje się, żeby funkcjonalnie różniły się w tym zakresie.





Poprzedni:ASP.NET---- zaimplementować przycisk kliknięcia lub link, który wyświetli okno logowania
Następny:Ustaw CheckBoxList tak, aby nie owijała linii
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com