MVC 4获取当前的区域,控制器和动作

时间:2013-12-12 22:40:31

标签: c# asp.net asp.net-mvc asp.net-mvc-4

在我的Layout.cshtml中,我调用RenderAction来显示每个页面请求的菜单:

 Html.RenderAction("NiceMenu", "Widgets", new {area = ""});

WidgetController需要知道执行控制器的父级和操作调用它,以便它可以使用突出显示的正确项目来呈现菜单。

Widget Controller的 NiceMenu操作怎么知道这个?

2 个答案:

答案 0 :(得分:7)

这就是我们这样做的方式

var action = (ViewContext.RouteData.Values["action"] ?? "").ToString().ToLower();
var controller = (ViewContext.RouteData.Values["controller"] ?? "").ToString().ToLower();
var area = (ViewContext.RouteData.DataTokens["area"] ?? "").ToString().ToLower();

答案 1 :(得分:5)

您可以在子操作的视图中使用ParentActionViewContextViewContext属性:

var parentRouteValues = ViewContext.ParentActionViewContext.RouteData.Values;
@Html.RenderAction("NiceMenu", "Widgets",
             new
             {
                 area = parentRouteValues["area"],
                 controller = parentRouteValues["controller"],
                 action = parentRouteValues["action"]
             })