使用RedirectToAction的自定义路由(asp.net mvc)

maX*_*maX 9 asp.net-mvc asp.net-mvc-routing

我在我的action方法中使用带有参数的RedirectToAction

return RedirectToAction("ListThreads", "View", new { category = "1", subcategory = "49"});
Run Code Online (Sandbox Code Playgroud)

重定向后,网址就像这样 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 = "" }
        );
Run Code Online (Sandbox Code Playgroud)

Sea*_*ing 12

我在我的应用程序中遇到了类似的路由问题,以解决我使用的问题:RedirectToRoute.如果您将RedirectToAction更改为:

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

你应该得到你想要的结果.有关更多信息,请参阅:http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoroute(v = vs.98).aspx


OJ.*_*OJ. 2

我以前见过类似的问题。听起来很糟糕,您可能必须将对象包装在RouteValueDictionary

return RedirectToAction("ListThreads", "View", new RouteValueDictionary(new { category = "1", subcategory = "49"}));
Run Code Online (Sandbox Code Playgroud)

尝试一下,看看效果如何。