1

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

我有以下内容:

  1. 调用控制器的布局视图:“HelperController”,操作:“菜单”,如下所示:

@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

我试过这个:

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

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

谢谢

4

1 回答 1

1

在这里回答:如何从子动作内部获取当前控制器和动作? 由 juhan_h

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

或者

ViewContext.ParentActionViewContext.RouteData.Values["action"]
于 2012-08-01T09:30:48.843 回答