RedirectToRoutePermanent不接受Action作为参数

时间:2011-12-06 23:49:40

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

我想这样做:

return RedirectToRoutePermanent("Dealers", new { action = "Join" });

但我不得不这样做才能让它发挥作用:

return RedirectPermanent("/dealers/join");  

加入是经销商控制器中的一个操作,另一条路由可以正常工作,并被路由到经销商控制器。但是当我以这种方式尝试时,它会在没有找到路径时出错。有什么想法吗?

4 个答案:

答案 0 :(得分:1)

return RedirectToActionPermanent("Join", "Dealers");

答案 1 :(得分:0)

基于MSDN引用,ReidrectToRoutePermanent采用字符串参数,该参数应该是路由名称而不是控制器名称。如果您依赖默认路由导航到/ dealers / join,那么这将无效。你的路由表是什么样的?你能附上注册路由代码吗?此外,如果您在Controller操作方法范围内执行,我认为您需要一个方法RedirectToActionPermanent

答案 2 :(得分:0)

可能有更好的方法,但您可以在调用中将Url.Action()包含在您的方法中吗?

答案 3 :(得分:0)

您可以使用RedirectToRoutePermanent。 RedirectToRoutePermanent方法适用于RouteName。 因此,您需要将RouteName作为第一个参数传递,并将Route参数作为第二个参数传递。

此外,您还需要提及控制器名称。 像,

return RedirectToRoutePermanent("YourRouteName", new { controller="Dealers", action = "Join" });
希望有所帮助。