Chociaż można zastąpić układ z kontrolerem jak sugerowano w innej odpowiedzi, moim zdaniem oznacza to, że regulatory są coraz prostu zbyt udział w określaniu, co będzie UI. Najlepiej pozostawić to wyłącznie w Widoku, aby zdecydować.
Najbliżej co pytasz jest to zrobić w bieżącym "~/Views/_ViewStart.cshtml"
:
@{
if(Context.Request.Path.StartsWith("/External", StringComparison.OrdinalIgnoreCase))
Layout = "~/Views/_ExternalLayout.cshtml";
else
Layout = "~/Views/_Layout.cshtml";
}
Gdzie "~/Views/_ExternalLayout.cshtml"
jest Twój alternatywny układ.
Może chcesz sprawdzić, czy prowadzący "/"
jest tam poprawny, nie pamiętam, czy tak jest.
Jeśli wstawisz to do istniejącego _ViewStart, to każdy widok, który jest renderowany w odpowiedzi na adres URL zaczynający się od "/External"
, użyje tego nowego układu, w przeciwnym razie zostanie użyty "normalny".
Innym podejściem jest użycie tabeli routingu do dodania wartości trasy, której można użyć tutaj w celu podjęcia decyzji o układzie; ale zastosowałem to podejście, aby było to proste.
Mam zamiar użyć tego samego kontrolera PlayerController dla "/ External/View". Czy powinienem w jakiś sposób określić routing? –
@NikitaMartyanov - zmieniłem nieco odpowiedź, ponieważ ponownie używasz tego samego kontrolera, oryginalne rozwiązanie jest świetne dla różnych kontrolerów, ale nie w przypadku ponownego użycia widoków i kontrolerów dla różnych adresów URL. –
Dziękuję, Andras - użyłem tego podejścia (również dodałem trasę, więc "Exteranal/View" jest mapowane na 'PlayerController' –