获取当前控制器&;局部视图中的动作
本文关键字:视图 局部 控制器 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");
}