ASP.NET 3: Как узнать, какие виды и макеты используются? - PullRequest
1 голос
/ 11 апреля 2011

Существуют следующие макеты и представление:

_GlobalLayout.cshtml

_SubLoyout.cshtml

SomePage.cshtml

В _GlobalLayout.cshtml Я хочу получить список всех используемых макетов и имя текущего представления.

Например, в _GlobalLayout.cshtml :

<html>
 <head>
   @Html.Some_method_that_will_know_about_used_layouts_and_view();
 </head>
 <body>
   @RenderBody();
 </body>
</html>

Some_method_that_will_know_about_used_layouts_and_view вернет некоторый контент, используя информацию об используемых макетах и ​​используемом представлении.

Как я могу реализовать этот метод?

Ответы [ 2 ]

2 голосов
/ 11 апреля 2011

Понятие текущего представления не имеет смысла.Вы еще не визуализировали тело (@RenderBody()) и ожидаете получить имя представления?Вы можете получить текущее действие и контроллер из ViewContext:

@{
    var currentController = ViewContext.RouteData.GetRequiredString("controller");
    var currentAction = ViewContext.RouteData.GetRequiredString("action");
}

Основной вопрос остается: зачем вам это и чего вы пытаетесь достичь с ним?

0 голосов
/ 09 октября 2013

Вы можете установить значения в PagesController:

Function YourPage() As ActionResult
    ViewData("NeedToLoadOtherTemplates") = True
    Return YourPage()
End Function

Затем в представлении вашего шаблона:

@If ViewData("NeedToLoadOtherTemplates") Then
    @loadTheOtherStuff
End If

Вы можете добавить данные представления для каждого дополнительного шаблона, который вам нужен.

...