특정 매크로 함수가 불리 기 전에 리디렉션하려면

페이지 생성 날짜 :

ASP.NET MVC로 구축 된 사이트에 액세스할 때 URL 라우팅에 의해 해당 하는 컨트롤러 작업이 호출 되지만 상황에 따라 해당 작업을 호출 하기 전에 다른 작업 및 다른 페이지로 리디렉션 시킬 수 있다고 생각 합니다.

각 작업에 리디렉션되는 경우 「 RedirectResult 」와 「 RedirectToRouteResult 」를 사용 하면 해결 되지만 각 매크로 함수가 불리 기 전에 공통적으로 리디렉션하는 경우는 「 Controller.OnActionExecuting 」 재정의 메서드를 사용할 수 있습니다. 이 메서드는 각 작업을 호출 하기 전에 처리 되는 방법입니다.

「 Controller.OnActionExecuting 」 메서드에서 리디렉션 하 고 싶다면 다음과 같이 작성 합니다.

public class MyController : Controller
{
  // 各アクションが呼ばれる前に呼ばれるメソッド
  public override void OnActionExecuting(ActionExecutingContext filterContext)
  {
    if (リダイレクトさせる条件)
    {
      filterContext.Result = new RedirectResult(url);
      return;
    }
  }
}

「 ActionExecutingContext.Result 」에 URL을 지정 하는 RedirectResult를 설정 하면 지정 된 URL로 리디렉션합니다. If 문장에서 분기 하는 경우 해당 컨트롤러의 모든 작업에 대해 리디렉션이 수행 됩니다.

또한 각 Controller 클래스의 기본 클래스에 공용의 Controller 클래스를 설정 하 고 거기에 「 OnActionExecuting 」 메서드를 구현 하는 경우 여러 Controller 클래스에서 작업을 공유할 수 있습니다.

「 ActionExecutingContext.Result 」는 형식이 ActionResult 이므로, 「 RedirectToRouteResult 」 클래스와 「 Controller.RedirectToAction 」 메서드 등도 사용할 수 있습니다.