1. 程式人生 > >ASP.NET MVC 攔截器中如何停止往後面的程式碼執行!

ASP.NET MVC 攔截器中如何停止往後面的程式碼執行!

  public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //這一步是驗證是否登陸
            if (filterContext.HttpContext.Session["User"] == null)
            {
                //當用這個方法的時候, 頁面輸出完了還會向後面的程式碼執行,使用return 也沒效果;
                //   filterContext.HttpContext.Response.Redirect("~/Home/Index",true);
                //   return ;


                ErrorRedirect(filterContext);
             
                
            }
        
 // 錯誤處理方法
        private void ErrorRedirect(ActionExecutingContext filterContext)
        {
            //注:由於前端頁面用的Iframe框架,用下面的方法跳轉的時候會跳轉到iframe裡面去,所以不能用註釋掉的方法
           // filterContext.Result = new RedirectToRouteResult("Default", new RouteValueDictionary(new { controller = "Home", action = "Index" }));
           // filterContext.Result = new RedirectResult("/Home/Index");
            ContentResult content = new ContentResult();
            content.Content = "<script language='javascript'> top.location.href = '/Home/Index';</script>";
            filterContext.Result = content;
        } // end ErrorRedirect