2012-01-20 2 views
19

웹 페이지 1의 컨트롤러에서 2 개의 변수를 전달하여 웹 페이지 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

생략 매개 변수는 기본적으로 필요한 매개 변수를 만들려면 : 경로 재 지정에 대한

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 
}); 

. 각 경로에는 널 (null) 이름이있어 모든 매개 변수를 명시 적으로 지정할 수 있습니다.

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

감사합니다 olivehour - 그 위대한 일했습니다. 왜 내가 RedirectToRoute의 내 버전이 내가 오버로드 된 메서드의 서명을 따르고 있기 때문에 작동하지 않는지 궁금합니다 .... 어떤 아이디어입니까? 감사합니다 – user1079925

+0

@ user1079925, 내가 말했듯이, 나는 경로 이름을 지정하지 않는 습관을 선택 했으므로 경로 이름을 사용하는 과부하는 사용하지 않습니다. 다행히 누군가가 거기에 무엇이 잘못되었는지 말할 수있는 사람에게 대답 할 것입니다. 이것은 당신의 노선을 지명하지 않는 이유의 한개 일 수 있고, 습관은 저를 지불했다. – danludwig

+0

좋아. 나는 너의지도를 받아서 경로 명명법에서 벗어나려고한다. – user1079925

관련 문제