繁体   English   中英

在ASP.NET MVC中获取控制器名称

[英]Get controller name in asp.net mvc

在我的应用程序中,我正在创建一个动态菜单。 根据需要的控制器来填充菜单。 例如,我的控制器名称之一是组织。 为了填充菜单,我称之为

@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")

现在,我不必一次又一次地传递额外的要求控制器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM