RedirectToAction和RedirectToRoute

在我的网页1控制器中,我想重定向到网页2,传递2个变量。

我尝试使用RedirectToRoute,但无法让它工作; 显示错误的URL。 然后我切换到使用RedirectToAction。

我的代码:

路由

routes.MapRoute( "CreateAdditionalPreviousNames", // Route name "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters new { controller = "UsersAdditionalPreviousNames", action = "Index", userId = UrlParameter.Optional, applicantId = UrlParameter.Optional } // Parameter defaults ); 

RedirectToAction(有效)

 return RedirectToAction("Index", "UsersAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id }); 

RedirectToRoute(不起作用)

 return RedirectToRoute("CreateAdditionalPreviousNames", new { userId = user.Id, applicantId = applicant.Id }); 

哦,另外一件事,你可以制作所需的参数,而不是可选的….如果是这样,怎么样?

省略参数默认值以生成所需的参数:

  routes.MapRoute( "CreateAdditionalPreviousNames", // Route name "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters new { controller = "UsersAdditionalPreviousNames", action = "Index" } ); 

对于路由重定向,请尝试以下方法:

 return RedirectToRoute(new { controller = "UsersAdditionalPreviousNames", action = "Index", userId = user.Id, applicantId = applicant.Id }); 

我从史蒂夫桑德森那里得到的另一个习惯是没有命名你的路线。 每个路由都可以具有空名称,这使您可以显式指定所有参数:

  routes.MapRoute( null, // Route name "Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters new { controller = "UsersAdditionalPreviousNames", action = "Index" } );