Webページ1のコントローラーで、2つの変数を渡してWebページ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 });
ああ、もう1つ、オプションではなく必須のパラメーターを作成できますか?
パラメーターのデフォルトを省略して、パラメーターを必須にします。
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
});
スティーブサンダーソンから選んだもう1つの習慣は、ルートに名前を付けないことです。各ルートにはヌル名を付けることができます。これにより、すべてのパラメーターを明示的に指定できます。
routes.MapRoute(
null, // Route name
"Users/{controller}/{action}/{userId}/{applicantId}", // URL with parameters
new { controller = "UsersAdditionalPreviousNames", action = "Index" }
);