ASP.Net MVC가 다른보기로 리디렉션


89

컨트롤러에서 다른보기로 리디렉션 할 수 있습니까?

예를 들어 내 모든 컨트롤러는 특정 기준이 충족되지 않으면 다른보기로 리디렉션하려는 생성자가있는 사용자 지정 컨트롤러에서 상속됩니다. 이해가 되길 바랍니다.

답변:


147

RedirectToAction()메서드 를 사용 하면 리디렉션하는 작업이보기를 반환 할 수 있습니다. 이를 수행하는 가장 쉬운 방법은 다음과 같습니다.

return RedirectToAction("Index", model);

그런 다음 Index 메서드에서 원하는 뷰를 반환합니다.


1
이런 식으로 한 경우 컨트롤러 Action에서 특정 뷰를 반환하는 방법은 무엇입니까?
Gavin

18
return View ( "ViewName");
Craig Stuntz

11
@Craig-반환 View는 리디렉션을 수행하지 않으며 URL은 이전과 동일합니다. 따라서 "/ edit / MyItem"에있는 경우 View ( "showitem")를 반환하면 "/ edit /"URL이있는 "showitem"뷰가 제공됩니다. 상황에 따라 작동 할 수 있지만 항상 그런 것은 아닙니다.
jeffreypriebe

5
@jeffrey는 두 단계로 구분됩니다. John이 말했듯이 첫 번째 작업에서 리디렉션 한 다음 두 번째 작업에서 View를 반환합니다. 첫 번째 작업은 (직접적으로, 어쨌든) 두 번째 작업을 사용할 뷰를 말할 수 없습니다.
Craig Stuntz 2011

@Craig 조금 도움이됩니다. "액션"과 "뷰"가 있습니다. 왜 내 대답은 아래에서 작동합니까 : RedirectToAction-보기 변경 없음. 이것이 .net MVC 101이라고 확신하지만 이해가되지 않습니다. 감사.
jeffreypriebe 2011

20
 if (true)
 {
   return View();
 }
 else
 {
   return View("another view name");
 }

2
이것은 동일한 컨트롤러 액션을 사용합니다. RedirectToAction은 다른 작업을 호출합니다. 이것은 나에게 가장 쉬운 해결책이었습니다.
RaoulRubin 2012 년

6

가장 간단한 방법은 return View를 사용하는 것입니다.

return View("ViewName");

MVC C # / .NET을 사용하는 경우 "ViewName"의 실제 이름은 프로젝트에서 ViewName.cshtml과 같아야합니다.


4

나는 이것에 대한 조건이 무엇인지 100 % 확신하지 못하지만 위의 내용이 직접 작동하지 않았으며 가까워 졌다고 생각했습니다. "ObjectID"라는 모델에서 뷰에 "id"가 필요했기 때문이라고 생각합니다.

다양한 정보를 가진 모델이있었습니다. 이드가 필요했습니다.

위의 전에 새 System.Web.Routing.RouteValueDictionary 개체를 만들고 필요한 ID를 추가했습니다.

(System.Web.Routing.)RouteValueDictionary RouteInfo = new RouteValueDictionary();
RouteInfo.Add("id", ObjectID);
return RedirectToAction("details", RouteInfo);

(참고 : 문제의 MVC 프로젝트는 내가 만들지 않았기 때문에 올바른 "이상한"비트가 어디에 있는지 모르겠습니다.)


3

수행 할 수있는 작업은 다음과 같습니다.

return View("another view name", anotherviewmodel);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.