如何使用我在Global.asax中定义的路由获取相对Url的控制器名称?
例:
如果我有这样的路线:
routes.MapRoute( "Default",// Route name "{language}/{controller}/{action}/{id}",// URL with parameters new { controller = "Home",action = "Index",id = "",language = "en" }
解决方法
请参阅Stephen Walther的博客文章
ASP.NET MVC Tip #13 – Unit Test Your Custom Routes
MvcFakes项目有一个旧的System.Web.Abstractions参考.所以你必须更换它
使用新的并重新编译项目以获取MvcFakes.dll.
这是我的代码:
public string getControllerNameFromUrl() { RouteCollection rc = new RouteCollection(); MvcApplication.RegisterRoutes(rc); System.Web.Routing.RouteData rd = new RouteData(); var context = new FakeHttpContext("\\" + HttpContext.Request.Url.AbsolutePath); rd = rc.GetRouteData(context); return rd.Values["action"].ToString(); }
在上面的代码中,“MvcApplication”是Global.asax中的类名.
祝你好运 !