RouteData.Values

时间:2012-03-10 15:08:29

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

HttpContext.Current.Request.RequestContext.RouteData.Values [“controller”]。ToString()确实返回当前控制器名称,但在用户输入时返回它。

例如,我的应用包含“ImageGallery”控制器,如果用户输入http://localhost/imagegallery来获取它 - 那么我从RouteData.Values而不是“ImageGallery”获得“imagegallery”。

如何获取原始控制器名称?

2 个答案:

答案 0 :(得分:0)

您可以获得用户输入的内容,因为它通常无关紧要(unless you are Linux/Unix)。但是,如果您的问题涉及的路线无法正确解决,那么您可能正在寻找this StackOverflow question吗?

答案 1 :(得分:0)

也许您可以获得控制器的实际CLR实例,并从您的视图中获取名称...

@if (this.ViewContext.Controller is MyController)
{
}

并且可能删除它的名字的“控制器”部分......如

this.ViewContext.Controller.GetType().Name.Replace("Controller", "")

PS:为了简化这篇文章,使用了.Replace(string, string),但最好使用.Substring(int, int)来电。

编辑:如果您不在视图中,也可以从Controller上下文中获取当前控制器(尽管您将在控制器中,this.GetType()会执行此操作它