2015-02-17 3 views
1

В моем приложении я создаю динамическое меню. Меню заполняется в зависимости от контроллера, для которого он вызван. Например, в одном из моих имен контроллеров используется организация. Для того, чтобы заполнить меню для этого я называю этоПолучить имя контроллера в asp.net mvc

@Html.Action("Menu","Site", new { calledForController = "Organization", oId = @Model.Id }) 

Все работает красиво и гладко, но вопрос, который я испытываю, когда я имею больше взглядов, что я должен поместить эту строку в каждом представлении. То, что я ищу, - это способ получить текущий контроллер и имя действия из данных маршрута, чтобы мне не приходилось вызывать это на каждом представлении.

Идеальным решением было бы написать что-то вроде этого

@Html.Action("Menu","Site") 

в моей _Layout.cshtml, а затем в меню списка меню контроллера заселить в зависимости от того, где он был вызван.

Если я пишу

this.ControllerContext.RouteData.Values["controller"].ToString(); 

в моем меню действия контроллера сайта Я всегда получать сайт как мое имя контроллера. Любые мысли по этому поводу?

ответ

1

Я искал и нашел, что это как подходящее решение для меня, чтобы получить данные маршрута используют этот

var routeValues = HttpContext.Request.RequestContext.RouteData.Values; 

if (routeValues.ContainsKey("id")) 
    oId = (String)routeValues["id"]; 

Таким образом, в моем _Layout.cshtml я могу написать эту

@Html.Action("Menu","Site") 

И теперь мне не нужно снова и снова передавать лишние призывы к контроллеру.

Смежные вопросы