MVC在辅助类中获取控制器

时间:2012-08-01 07:46:38

标签: asp.net-mvc asp.net-mvc-3 razor

我需要能够在自定义帮助程序类中获取控制器名称。

我有以下内容:

  1. 调用控制器的布局视图:“HelperController”,动作:“菜单”如下:
  2. @Html.Action("Menu", "Helper")

    1. 这会调用ActionResult并生成一个html:

      @model List<MvcMenuItem>
      @{
      Layout = null;
      }
      @{        
      @Html.Menu(this.ViewContext).ClientId("navMain").AddRange(Model).Render()
      }
      
    2. 这会调用“public static class MvcMenuExtensions”并在那里(在我的Render()方法中)我需要能够获取我当前所在的控制器名称,而不是控制器名称。致电MvcMenuExtensions

    3. 我试过这个:

      string controller = this.ViewContext.RouteData.Values["controller"].ToString();
      

      但这会导致控制器成为“Helper”控制器,而不是我所在的当前控制器。因为从页面的任何位置调用“ActionResult”(它在布局中)

      由于

1 个答案:

答案 0 :(得分:1)

在这里回答:How to get current controller and action from inside Child action?  by juhan_h

ControllerContext.ParentActionViewContext.RouteData.Values["action"] 

OR

ViewContext.ParentActionViewContext.RouteData.Values["action"]