HttpContext.Current.Request.RequestContext.RouteData.Values"controller".ToString()确实会返回当前的控制器名称,但它会在用户输入时返回该名称。
例如,我的应用程序包含"ImageGallery“控制器,如果用户输入http://localhost/imagegallery来获取它,那么我将从RouteData.Values中获取"ImageGallery”而不是"imagegallery“。
如何获取控制器的原始名称?
发布于 2012-03-11 07:40:38
也许你可以获得控制器的实际CLR实例,并从那里获得视图的名称……
@if (this.ViewContext.Controller is MyController)
{
}也许去掉它名字中的“控制器”部分...喜欢
this.ViewContext.Controller.GetType().Name.Replace("Controller", "")PS:为了这篇文章的简单性,我使用了.Replace(string, string),但是使用.Substring(int, int)调用可能更好。
编辑:如果您不在视图中,也可以从控制器上下文中获取当前控制器(尽管您在控制器中,在这种情况下,this.GetType()将执行此操作。
发布于 2012-03-10 23:17:26
您将获得用户输入的内容,因为这通常无关紧要(unless you are Linux/Unix)。但是,如果您的问题处理的路由不能正确解决,那么也许this StackOverflow question就是您正在寻找的?
https://stackoverflow.com/questions/9647468
复制相似问题