获取当前控制器&;局部视图中的动作

本文关键字:视图 局部 控制器 amp 获取 | 更新日期: 2023-09-27 17:59:38

我使用以下内容来获取asp.net MVC3中的当前控制器和操作:

var currentAction = routeData.GetRequiredString("action");
var currentController = routeData.GetRequiredString("controller");

这非常有效。但是,如果我在从布局调用的局部视图中调用它,"布局"将作为当前控制器返回。这当然是正确的行为,但有什么方法可以访问父控制器的名称吗?

编辑以进一步澄清:

我正在调用_Layout.cshtml:中的菜单控制器和部分视图

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

然后,在Menu部分视图中,我正在调用返回当前操作和控制器的代码。

获取当前控制器&;局部视图中的动作

在您更新了问题并显示了代码之后,就更清楚了:您没有包含部分视图。你正在进行儿童诉讼。CCD_ 2和CCD_。因此,如果你想在这个子动作中获得父上下文,你可以这样做:

public ActionResult Menu()
{
    var rd = ControllerContext.ParentActionViewContext.RouteData;
    var currentAction = rd.GetRequiredString("action");
    var currentController = rd.GetRequiredString("controller");
    ...
    return View();
}

我偶然发现了这个页面,正在寻找一种在使用Partial 进行调用后访问父控制器名称的方法

@Html.Partial("Paging")

这可以在的局部视图中完成

@{
    var controller = ViewContext.RouteData.GetRequiredString("controller");
    var action = ViewContext.RouteData.GetRequiredString("action");
}