2010-04-24 63 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」,然後這一切都可以正常工作