ASP.NET MVC 攔截器中如何停止往後面的程式碼執行!
阿新 • • 發佈:2019-02-01
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