У меня есть методы расширения для класса MVC Controller
, который должен знать, что такое текущий файл макета по умолчанию (т.е. значение из _ViewStart.cshtml
).
Код находится в библиотеке, поэтому у меня есть только контроллер, с которого можно начать. Приведенный ниже код в основном позволяет любому действию контроллера всегда возвращать PartialPage, но условно назначает макет макета по умолчанию (делая его полным представлением), если он не был ответом на запрос Ajax (например, чтобы увидеть всю страницу для отладки).
e.g.
public static void RenderMode(this Controller controller)
{
if (!controller.Request.IsAjaxReuest())
{
controller.ViewBag.Layout = ????????;
}
}
Итак, вопрос в том, как получить из кода значение макета страницы по умолчанию?
_ViewStart
всегда является первым представлением, которое выполняется объектомRazerView
. Этоinternal readonly
поле ViewStartFileName внутриRazorViewEngine
. Файл _ViewStart может определять для каждой папки макет по умолчанию для всех представлений ниже. Внутри глобального фильтра действий было бы проще условно изменить макет. Проблема в том, что контроллер еще не знает о созданном представлении. - person Andreas   schedule 22.08.2014