2012-01-20 10 views
19

私のコントローラのWebページ1では、2つの変数を渡してWebページ2にリダイレクトします。RedirectToActionとRedirectToRoute

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

パラメータを指定しないとどうなりますか?はい、それは可能ですが、起こるのは404エラーが発生するか、それと似たようなことです。それはあなたが欲しいものですか? –

答えて

19

省略パラメータのデフォルト値:

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

私はスティーブサンダーソンからピックアップ別の習慣があなたのルートを命名されていない:ルートリダイレクトについては

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

、これを試してみてください。各ルートには、すべてのパラメータを明示的に指定できるヌルの名前を付けることができます。

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

おかげでolivehour - それは素晴らしい仕事。 私はオーバーロードされたメソッドのシグネチャに従っているので、RedirectToRouteの私のバージョンが動作しないのはなぜかと疑問に思った。 ありがとう – user1079925

+0

@ user1079925私が言ったように、私は私のルートに名前を付けないという習慣を拾ったので、私はルート名を取る過負荷を決して使用しません。うまくいけば、誰かがあなたに何が間違っていたかを教えてくれる誰かに答えてくれるでしょこれはあなたのルートに名前をつけない理由の1つかもしれません、習慣は私のために報われました。 – danludwig

+0

Ok ....私はあなたのリードを取って、ルートの命名から離れていくつもりです。 – user1079925

関連する問題