Chciałbym mieć 2 osobne układy w mojej aplikacji. Powiedzmy, że jeden jest przeznaczony do części publicznej strony internetowej, a drugi do strony członka.
Dla uproszczenia załóżmy, że cała logika każdego z tych miejsc jest starannie zapakowana w 2 różne kontrolery.
- PublicController
- StaffController
I że każdy z nich ma odpowiedni Układ dla całego Widoku pod każdym.
- _PublicLayout.cshtml
- _StaffLayout.cshtml
Jak użyć pliku _ViewStart.cshtml, aby określić, że wszystkie Widoki / Akcje w „Publicznym” używają PublicLayout, a wszystko w „Staff” korzysta z StaffLayout?
Dzięki!
asp.net-mvc
layout
asp.net-mvc-3
razor
Justin
źródło
źródło
Razor
widoku, po prostu ustawLayout = null;
Odpowiedzi:
Możesz umieścić
_ViewStart.cshtml
plik w/Views/Public
folderze, który zastąpi domyślny w/Views
folderze i określi pożądany układ:Analogicznie możesz umieścić
_ViewStart.cshtml
w/Views/Staff
folderze inny plik z:Możesz również określić, który układ powinien zostać użyty podczas zwracania widoku wewnątrz akcji kontrolera, ale to na akcję:
Jeszcze inną możliwością jest niestandardowy filtr akcji, który zastąpiłby układ. Jak widać wiele możliwości osiągnięcia tego celu. Od Ciebie zależy, który z nich najlepiej pasuje do Twojego scenariusza.
AKTUALIZACJA:
Zgodnie z żądaniem w sekcji komentarzy, oto przykład filtru akcji, który wybrałby stronę wzorcową:
a następnie udekoruj kontroler lub akcję za pomocą tego niestandardowego atrybutu określającego pożądany układ:
źródło
LayoutInjecterAttribute
. ? Czy jest jakaś konkretna lokalizacja?ActionFilters
podfolderze.LayoutInjecterAttribute
: Jest wywoływany przedOnException
metodą kontrolera . Jeśli więc kontroler zapewnia wynik widoku podczas obsługi wyjątków, układ nie zostanie ustawiony.OnActionExecuted
. Czy możesz zaktualizować odpowiedź dla mnie.Jeszcze jedną metodą jest zdefiniowanie układu w widoku:
Więcej sposobów zrobienia można znaleźć tutaj , mam nadzieję, że to komuś pomoże.
źródło
Ta metoda jest dla początkujących najprostszym sposobem kontrolowania renderowania układów w aplikacji ASP.NET MVC. Możemy zidentyfikować kontroler i wyrenderować Layouty jako par kontrolera, w tym celu możemy napisać nasz kod w pliku _ViewStart w katalogu głównym folderu Views. Poniżej znajduje się przykład pokazujący, jak można to zrobić.
Przeczytaj cały artykuł tutaj „Jak renderować inny układ w ASP.NET MVC”
źródło