【问题标题】:RouteTable.Routes.GetVirtualPath with route data asp.net MVC 2RouteTable.Routes.GetVirtualPath 与路由数据 asp.net MVC 2
【发布时间】:2010-04-24 00:25:34
【问题描述】:

我正在尝试从我的路由表中获取一个 URL。方法如下。

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。

【问题讨论】:

    标签: c# asp.net-mvc-routing


    【解决方案1】:

    x 试试 RouteCollection.GetVirtualPathForArea,对我有用

    xRouting and GetVirtualPath problem

    其实这并没有什么不同,问题是路由值中的区域是空白的,我们仍然使用旧的 AreaViewEngine 回来

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

    【讨论】:

      猜你喜欢
      • 2011-08-05
      • 1970-01-01
      • 2011-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 2011-10-19
      相关资源
      最近更新 更多