Несколько макетов для ASP.Net MVC 4

У меня есть _ViewStart.cshtml в папке основного представления со следующим кодом.

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

В папке View моей админки у меня есть _ViewStart.cshtml с этим кодом

@{
    Layout = Request.IsAjaxRequest() ? null : "~/Areas/Admin/Views/Shared/_Layout.cshtml";
}

Я ставлю точку останова на обе строки кода, и когда я захожу в административную область, я вижу, что он попадает в viewstart в этой папке, а не в основной папке. Несмотря на то, что он попадает в этот код, он по-прежнему использует только основной макет.


person Jhorra    schedule 29.10.2012    source источник
comment
Можете ли вы подтвердить, что содержимое макета администратора отличается от стандартного? Ваше наблюдение за точками останова верно.   -  person    schedule 30.10.2012
comment
Да, чтобы убедиться, что я не путаю их, я написал большими буквами: Это основной макет, а Это администратор на соответствующих макетах.   -  person Jhorra    schedule 30.10.2012
comment
Ну, Request.IsAjaxRequest() нуль? Меня тоже немного смущает ваша терминология. Что такое «основная папка просмотра»? В смысле не в районе?   -  person Erik Funkenbusch    schedule 30.10.2012
comment
Вы уверены, что в вашем представлении нет настройки макета?   -  person Erik Funkenbusch    schedule 30.10.2012
comment
Вот и все, я тестировал раньше, и у меня была настройка макета в представлении, на которое я смотрел. Если вы поставите это как ответ, я отмечу его принятым.   -  person Jhorra    schedule 30.10.2012


Ответы (1)


Сначала я этого не заметил, но конкретное представление, которое я тестировал, указывало неверный макет, поэтому независимо от того, что я помещал в другом месте, оно перезаписывало его.

person Jhorra    schedule 02.11.2012