2

多くのアクションを持つコントローラーがあります。この条件に基づいて、いくつかのアクションの実行を防ぐ必要があります。

if (Session["MyObject"] == null) return RedirectToAction("Introduction");

デフォルトの紹介アクションにリダイレクトする必要があります。

この条件を各アクションに入れることができますが、コントローラーのコンストラクターのように、この条件を 1 か所だけで定義したいと思います。

何か案は?ありがとうございました。

4

1 に答える 1

7

これは簡単なモックアップですが、アイデアは成り立つと思います

public class CheckSessionFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.HttpContext.Session["MyObject"] == null)
        {
            // redirect must happen OnActionExecuting (not OnActionExecuted)
            filterContext.Result = new RedirectToRouteResult(
              new System.Web.Routing.RouteValueDictionary {
              {"controller", "Tools"}, {"action", "CreateSession"}

        }
        base.OnActionExecuting(filterContext);
    }   
}
于 2013-01-30T18:16:15.270 に答える