RouteTable.Routes.GetVirtualPath с данными маршрута asp.net MVC 2 - PullRequest
0 голосов
/ 24 апреля 2010

Я пытаюсь получить 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, новый RouteValueDictionary (new {actionName = actionName, controller = controllerName, параметр = param})) продолжает давать мне ноль. Есть мысли?

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

        );

Я знаю, что могу использовать redirectToAction и другие методы, но я хотел бы изменить URL-адрес в браузере новыми маршрутизированными данными.

1 Ответ

0 голосов
/ 15 октября 2010

x попробуйте вместо этого RouteCollection.GetVirtualPathForArea, у меня сработало

x Проблема маршрутизации и GetVirtualPath

На самом деле это ничем не отличалось, проблема заключалась в том, что область в значениях маршрута была пустой, и мы все еще используем старый AreaViewEngine с самого начала

В качестве временного исправления мы меняем область, если пусто, на «root», и тогда все работает нормально

...