использовать пользовательский маршрут с RedirectToAction (asp.net mvc) - PullRequest
9 голосов
/ 08 марта 2011

Я использую RedirectToAction с параметрами в моем методе действия

return RedirectToAction("ListThreads", "View", new { category = "1", subcategory = "49"});

После перенаправления URL выглядит так http://domain/Forum/View/ListThreads?category=1&subcategory=49

Я хочу, чтобы это генерировалось как http://domain/Forum/View/ListThreads/1/49

Как это сделать?

Примечание: у меня уже есть маршрут в global.asax, который используется всеми страницами / ссылками.

context.MapRoute(
            "Forum_subcategory",
            "Forum/{controller}/{action}/{category}/{subcategory}",
            new { controller = "View", action = "ListThreads", category = "", subcategory = "" }
        );

Ответы [ 2 ]

12 голосов
/ 20 ноября 2012

У меня была проблема симуляции с маршрутизацией в моем приложении, для решения проблемы я использовал: RedirectToRoute . Если вы измените свой RedirectToAction на это:

return RedirectToRoute("Forum_subcategory", new { controller = "View", action = "ListThreads", category = "1", subcategory = "49" });

Вы должны получить результат, который вы ищете. Для получения дополнительной информации метод Controller.RedirectToRoute см.: http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoroute(v=vs.98).aspx

2 голосов
/ 08 марта 2011

Я видел подобные проблемы раньше. Как бы глупо это ни звучало, вам, возможно, придется обернуть свой объект в RouteValueDictionary:

return RedirectToAction("ListThreads", "View", new RouteValueDictionary(new { category = "1", subcategory = "49"}));

Дайте ему попытку, посмотрите, как оно пойдет.

...