でリダイレクトを実行する最も良い方法は何ですかActionFilterAttribute
。 が呼び出されActionFilterAttribute
、IsAuthenticatedAttributeFilter
セッション変数の値をチェックします。変数が false の場合、アプリケーションをログイン ページにリダイレクトします。ルート名を使用してリダイレクトしたいのですSystemLogin
が、この時点ではどのリダイレクト方法でも問題ありません。
ベストアンサー1
filterContext.Result を設定する
ルート名:
filterContext.Result = new RedirectToRouteResult("SystemLogin", routeValues);
次のようなこともできます:
filterContext.Result = new ViewResult
{
ViewName = SharedViews.SessionLost,
ViewData = filterContext.Controller.ViewData
};
使用したい場合RedirectToAction
:
RedirectToAction
コントローラーにパブリックメソッドを作成することもできます(できればベースコントローラに) は、単に protected を呼び出しますRedirectToAction
。System.Web.Mvc.Controller
このメソッドを追加すると、 public 呼び出しが可能になります。あなたの RedirectToAction
フィルターから。
public new RedirectToRouteResult RedirectToAction(string action, string controller)
{
return base.RedirectToAction(action, controller);
}
すると、フィルターは次のようになります。
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var controller = (SomeControllerBase) filterContext.Controller;
filterContext.Result = controller.RedirectToAction("index", "home");
}