在我的网页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 });
哦,另外一件事,你能否制作所需的参数,而不是可选的....如果是的话,怎么做?
答案 0 :(得分:23)
省略参数默认值以生成所需参数:
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" }
);