/// <summary>返回结果并刷新</summary> /// <param name="data">消息</param> /// <returns></returns> protected virtual ActionResult JsonRefresh(Object data) => ControllerHelper.JsonRefresh(data);
/// <summary>返回结果并刷新</summary> /// <param name="data">消息</param> /// <returns></returns> protected virtual ActionResult JsonRefresh(Object data) { return(ControllerHelper.JsonRefresh(data)); }
/// <summary>返回结果并跳转</summary> /// <param name="data">结果。可以是错误文本、成功文本、其它结构化数据</param> /// <param name="url">提示信息后跳转的目标地址,[refresh]表示刷新当前页</param> /// <returns></returns> protected virtual ActionResult JsonTips(Object data, String url = null) => ControllerHelper.JsonTips(data, url);
/// <summary>拦截异常</summary> /// <param name="ctx"></param> public override void OnException(ExceptionContext ctx) { if (ctx.ExceptionHandled) { return; } //XTrace.WriteException(ctx.Exception); var ex = ctx.Exception?.GetTrue(); if (ex != null) { // 避免反复出现缺少文件 if (ex is HttpException hex && (UInt32)hex.ErrorCode == 0x80004005) { var url = HttpContext.Current.Request.RawUrl + ""; if (!NotFoundFiles.Contains(url)) { NotFoundFiles.Add(url); } else { ex = null; } } // 拦截没有权限 if (ex is NoPermissionException nex) { ctx.Result = ctx.Controller.NoPermission(nex); ctx.ExceptionHandled = true; } if (ex != null) { XTrace.WriteException(ex); } } if (ctx.ExceptionHandled) { return; } // 判断控制器是否在管辖范围之内,不拦截其它控制器的异常信息 if (Setting.Current.CatchAllException || AreaRegistrationBase.Contains(ctx.Controller)) { ctx.ExceptionHandled = true; if (ctx.RequestContext.HttpContext.Request.IsAjaxRequest()) { var act = "操作"; if (ctx.RouteData.Values.ContainsKey("action")) { act = "[{0}]".F(ctx.RouteData.Values["action"]); } ctx.Result = ControllerHelper.JsonTips("{0}失败!{1}".F(act, ex.Message)); } else { var vr = new ViewResult { ViewName = "CubeError" }; vr.ViewBag.Context = ctx; ctx.Result = vr; } } base.OnException(ctx); }