2012-05-28 3 views
86

컨트롤러가 두 개 있는데 모두 AccountController입니다. 그들 중 하나는 Controller A이라고 부르며 Admin이라고하는 Area이고 다른 하나는 Controller B이라고 할 수 있으며 Area이 아닙니다 (기본 값이 Area 인 것 같습니다). Controller BLogin이라는 action method입니다. 나는이 라인다른 컨트롤러의 작업으로 리디렉션

return RedirectToAction("LogIn", "Account"); 

문제를 가지고 Controller Aaction method는 시도가 Controller A에 존재하지 않는 action로 리디렉션으로 이루어지기 때문에이 라인이 실행됩니다 때 나는 404를 얻을 수 있다는 것입니다 있습니다. action methodController B으로 전화하고 싶습니다. 이것이 가능한가?

+1

가능한 중복 http://stackoverflow.com/questions/7892094/mvc-redirect- :

그것은이 RedirectToAction 오버로드를 사용하고 to-index-from-another-controller) – musefan

답변

173

routeValues 매개 변수에 area을 제공 할 수 있습니다. 이 시도 :

return RedirectToAction("LogIn", "Account", new { area = "" }); 

return RedirectToAction("LogIn", "Account", new { area = "Admin" }); 

또는

은 당신이 목표로하고있는 지역에 따라.

+0

특정 영역의보기에서 어떤 영역에도없는 컨트롤러의 동작으로 이동하려면 어떻게해야합니까? MVC5에서와 마찬가지로 오른쪽 상단의 LogOff 버튼은 AccountController에 있으며 어떤 영역에도 존재하지 않습니다. 그리고 특정 지역의보기에서 LogOff를 원하십니까 ??? –

+1

두 번째 예제 인'area = ""는 그렇게 할 것입니다. –

+0

ThankYou 대단히 감사합니다. –

17

사용이 :

return RedirectToAction("LogIn", "Account", new { area = "" }); 

이 "전역"지역에서 Account 컨트롤러의 LogIn 조치로 리디렉션됩니다.

protected internal RedirectToRouteResult RedirectToAction(
    string actionName, 
    string controllerName, 
    Object routeValues 
) 

MSDN

[다른 컨트롤러에서 인덱스에 MVC 리디렉션 (의
관련 문제