如何从ASP.NET MVC中不同控制器和操作呈现的Html.Action中检索控制器和操作名称

时间:2015-09-16 07:43:23

标签: c# asp.net asp.net-mvc

我在ASP.NET MVC中检索Controller和Action名称时遇到问题。以下是我的情景。

第1步:

我正在布局页面中渲染一个Html.Action(“侧边栏”,“帮助者”)。所以Controller和Action就是这样的。

第2步:

我正在尝试将当前控制器名称和操作名称传递给侧边栏视图的视图。例如,如果我在HomeController,控制器名称将是'Home'而不是'Helper',因为HelperController位于布局页面中,并且包含在每个页面中。我正在尝试检索名称,如步骤3中所示。

第3步

public class HelperController:Controller{
    public PartialViewResult sidebar()
    {
       string con_action = ControllerContext.RouteData.Values["controller"].ToString()+"-"+ControllerContext.RouteData.Vaues["action"].ToString();
    }
}

我的问题:即使我导航到HomeController的Index动作,它也会继续返回控制器名称“Helper”和动作名称“sidebar”。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您可以将当前控制器名称和操作名称作为参数传递到布局页面中,如此

@Html.Action("sidebar", "Helper", new { thisController = ViewContext.RouteData.Values["controller"].ToString(), thisAction = ViewContext.RouteData.Values["action"].ToString() })

然后在Helper控制器中访问它们

    public class HelperController:Controller{
            public PartialViewResult sidebar(string thisController, string thisAction)
            {
               string con_action = thisController + "-" + thisAction;
               ...
            }
        }