在 asp.net mvc 中获取控制器名称
Get controller name in asp.net mvc
在我的应用程序中,我正在创建一个动态菜单。菜单根据调用它的控制器进行填充。例如,我的控制器名称之一是 Organization。为了填充它的菜单,我称之为
@Html.Action("Menu","Site", new { calledForController = "Organization", oId = @Model.Id })
一切都很好,很顺利,但我遇到的问题是,当我有更多的观点时,我必须把上面的行放在每个视图中。我正在寻找的是一种从路由数据中获取当前控制器和操作名称的方法,这样我就不必在每个视图上都调用它。
理想的解决方案是写这样的东西
@Html.Action("Menu","Site")
在我的 _Layout.cshtml 中,然后在菜单控制器中根据调用位置填充菜单列表。
如果我写
this.ControllerContext.RouteData.Values["controller"].ToString();
在站点控制器的菜单操作中,我总是将站点作为我的控制器名称。对此有什么想法吗?
我已经搜索并发现这是适合我的解决方案,要获取路线数据,请使用此
var routeValues = HttpContext.Request.RequestContext.RouteData.Values;
if (routeValues.ContainsKey("id"))
oId = (String)routeValues["id"];
这样在我的_Layout.cshtml我可以这样写
@Html.Action("Menu","Site")
现在我不必一次又一次地传递额外的调用控制器。
在我的应用程序中,我正在创建一个动态菜单。菜单根据调用它的控制器进行填充。例如,我的控制器名称之一是 Organization。为了填充它的菜单,我称之为
@Html.Action("Menu","Site", new { calledForController = "Organization", oId = @Model.Id })
一切都很好,很顺利,但我遇到的问题是,当我有更多的观点时,我必须把上面的行放在每个视图中。我正在寻找的是一种从路由数据中获取当前控制器和操作名称的方法,这样我就不必在每个视图上都调用它。
理想的解决方案是写这样的东西
@Html.Action("Menu","Site")
在我的 _Layout.cshtml 中,然后在菜单控制器中根据调用位置填充菜单列表。
如果我写
this.ControllerContext.RouteData.Values["controller"].ToString();
在站点控制器的菜单操作中,我总是将站点作为我的控制器名称。对此有什么想法吗?
我已经搜索并发现这是适合我的解决方案,要获取路线数据,请使用此
var routeValues = HttpContext.Request.RequestContext.RouteData.Values;
if (routeValues.ContainsKey("id"))
oId = (String)routeValues["id"];
这样在我的_Layout.cshtml我可以这样写
@Html.Action("Menu","Site")
现在我不必一次又一次地传递额外的调用控制器。