在我的Layout.cshtml中,我调用RenderAction来显示每个页面请求的菜单:
Html.RenderAction("NiceMenu", "Widgets", new {area = ""});
WidgetController需要知道执行控制器的父级和操作调用它,以便它可以使用突出显示的正确项目来呈现菜单。
Widget Controller的 NiceMenu操作怎么知道这个?
答案 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)
您可以在子操作的视图中使用ParentActionViewContext的ViewContext属性:
var parentRouteValues = ViewContext.ParentActionViewContext.RouteData.Values;
@Html.RenderAction("NiceMenu", "Widgets",
new
{
area = parentRouteValues["area"],
controller = parentRouteValues["controller"],
action = parentRouteValues["action"]
})