首页 > 学院 > 开发设计 > 正文

MVC的Filters(拦截过滤)的Error页面,支持Ajax报错

2019-11-17 02:10:49
字体:
来源:转载
供稿:网友

MVC的Filters(拦截过滤)的Error页面,支持Ajax报错

报错拦截过滤到error页面

    [AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = true)]    public class ExceptionAttribute : FilterAttribute, IExceptionFilter    {        /*报错回到报错页Error*/        /*         *CreateTime:2013‎年‎3‎月‎18‎日         */        public void OnException(ExceptionContext filterContext)        {            //报错回到报错页            string message = string.Format("消息类型:{0}<br>消息内容:{1}<br>引发异常的方法:{2}<br>引发异常源:{3}"                , filterContext.Exception.GetType().Name                , filterContext.Exception.Message                 , filterContext.Exception.TargetSite                 , filterContext.Exception.Source + filterContext.Exception.StackTrace                 );            filterContext.Controller.ViewData["ErrorMessage"] = message;//filterContext.Exception.Message + " 亲!您犯错了哦!";//得到报错的内容            filterContext.Result = new ViewResult()//new一个url为Error视图            {                ViewName = "Error",/*在Shard文件夹下的Error.cshtml*/                ViewData = filterContext.Controller.ViewData//view视图的属性中的viewdata被赋值            };            filterContext.ExceptionHandled = true;        }    }

修改上面功能,增加ajax错误判断

/*报错回到报错页Error*/        /*         *CreateTime:2013‎年‎3‎月‎18‎日         */        public void OnException(ExceptionContext filterContext)        {            //报错回到报错页            string message = string.Format("消息类型:{0}<br>消息内容:{1}<br>引发异常的方法:{2}<br>引发异常源:{3}"                , filterContext.Exception.GetType().Name                , filterContext.Exception.Message                 , filterContext.Exception.TargetSite                 , filterContext.Exception.Source + filterContext.Exception.StackTrace                 );            filterContext.Controller.ViewData["ErrorMessage"] = message;//filterContext.Exception.Message + " 亲!您犯错了哦!";//得到报错的内容            if (filterContext.HttpContext.Request.IsAjaxRequest())            {                filterContext.Result = new ContentResult()                {                    Content = "Error",                    ContentEncoding = Encoding.UTF8                };            }            else {                filterContext.Result = new ViewResult()//new一个url为Error视图                {                    ViewName = "Error",/*在Shard文件夹下*/                    ViewData = filterContext.Controller.ViewData//view视图的属性中的viewdata被赋值                };            }            filterContext.ExceptionHandled = true;        }


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表