首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从局部视图中获取当前控制器和操作

从局部视图中获取当前控制器和操作
EN

Stack Overflow用户
提问于 2011-06-19 02:55:11
回答 2查看 24.3K关注 0票数 21

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

代码语言:javascript
复制
var currentAction = routeData.GetRequiredString("action");
var currentController = routeData.GetRequiredString("controller");

这个可以完美地工作。然而,如果我从我的布局中调用的局部视图中调用它," layout“将作为当前控制器返回。这当然是正确的行为,但是有没有办法访问父控制器的名称呢?

有关进一步说明的编辑:

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

代码语言:javascript
复制
@Html.Action("Menu", "Layout")

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-19 03:14:43

在更新问题并显示代码之后,事情就清楚多了:您没有包含部分视图。您正在调用子操作。Html.PartialHtml.Action之间有很大的不同。因此,如果您想要获取该子操作中的父上下文,可以这样做:

代码语言:javascript
复制
public ActionResult Menu()
{
    var rd = ControllerContext.ParentActionViewContext.RouteData;
    var currentAction = rd.GetRequiredString("action");
    var currentController = rd.GetRequiredString("controller");
    ...
    return View();
}
票数 46
EN

Stack Overflow用户

发布于 2012-07-25 21:33:03

我偶然发现了这个页面,希望在调用Partial后找到访问父控制器名称的方法

代码语言:javascript
复制
@Html.Partial("Paging")

这可以在局部视图中完成,如下所示

代码语言:javascript
复制
@{
    var controller = ViewContext.RouteData.GetRequiredString("controller");
    var action = ViewContext.RouteData.GetRequiredString("action");
}
票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6398189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档