Хотя вы можете переопределить компоновку с контроллера, как было предложено в другом ответе, по моему мнению, это означает, что контроллеры задействуют только * , участвующих в определении того, каким будет пользовательский интерфейс.Лучше оставить это только на усмотрение Решений.
Самое близкое к тому, о чем вы просите, это сделать в вашей текущей "~/Views/_ViewStart.cshtml"
:
@{
if(Context.Request.Path.StartsWith("/External", StringComparison.OrdinalIgnoreCase))
Layout = "~/Views/_ExternalLayout.cshtml";
else
Layout = "~/Views/_Layout.cshtml";
}
Где "~/Views/_ExternalLayout.cshtml"
ваш альтернативный макет.
Возможно, вы захотите проверить правильность начального значения "/"
, я не могу вспомнить, если это так.
Если вы вставите это всуществующий _ViewStart, то любое представление, которое отображается в ответ на URL, начинающийся с "/External"
, будет использовать этот новый макет, в противном случае будет использоваться «нормальный».
Другой подход заключается в использовании маршрутизации.таблица для добавления значения маршрута, которое можно использовать здесь для принятия решения о компоновке;но я пошел на этот подход, чтобы сохранить его простым.