2010-04-24 65 views
0

我试图从我的路由表中获取URL。这是方法。RouteTable.Routes.GetVirtualPath与路由数据asp.net MVC 2

private static void RedirectToRoute(ActionExecutingContext context, string param) 
    { 
     var actionName = context.ActionDescriptor.ActionName; 
     var controllerName = context.ActionDescriptor.ControllerDescriptor.ControllerName; 

     var rc = new RequestContext(context.HttpContext, context.RouteData); 
     string url = RouteTable.Routes.GetVirtualPath(rc, new RouteValueDictionary(new { actionName = actionName, controller = controllerName, parameter = param })).VirtualPath; 
     context.HttpContext.Response.Redirect(url, true); 

    } 

我试图将其映射到。然而RouteTable.Routes.GetVirtualPath(rc,new RouteValueDictionary(new {actionName = actionName,controller = controllerName,parameter = param}))不断给我null。有什么想法吗?

routes.MapRoute(
      "default3",            // Route name 
      "{parameter}/{controller}/{action}",       // URL with parameters 
      new { parameter= "parameterValue", controller = "Home", action = "Index" } 

     ); 

我知道我可以使用redirectToAction等方法,但我想改变URL与新的RouteData浏览器。

回答

0

X尝试RouteCollection.GetVirtualPathForArea代替,工作对我来说

X Routing and GetVirtualPath problem

其实这不是任何不同,但问题是,在路线计算出来的面积是空白的,而我们仍在使用旧的AreaViewEngine

作为一个临时修复,我们将空白区域更改为“root”,然后这一切都可以正常工作