MVC 4获取当前区域、控制器和操作

本文关键字:控制器 操作 区域 获取 MVC | 更新日期: 2024-09-19 13:26:27

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

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

WidgetController需要知道执行ControllerAction的父级调用它,以便它可以在突出显示正确项目的情况下呈现菜单。

小工具Controller的NiceMenu操作如何知道这一点?

MVC 4获取当前区域、控制器和操作

就是这样做的

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

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

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