MVC 4获取当前区域、控制器和操作
本文关键字:控制器 操作 区域 获取 MVC | 更新日期: 2024-09-19 13:26:27
在Layout.cshtml中,我调用RenderAction来显示每个页面请求的菜单:
Html.RenderAction("NiceMenu", "Widgets", new {area = ""});
WidgetController需要知道执行Controller和Action的父级调用它,以便它可以在突出显示正确项目的情况下呈现菜单。
小工具Controller的NiceMenu操作如何知道这一点?
就是这样做的
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"]
})