问题描述
- .net中 easyui在mvc过滤器处理报错时怎么跳回到登录界面
-
.net中 easyui在mvc过滤器处理报错时怎么跳回到登录界面
我用mvc的过滤器做了一个全局的异常处理,前台是用的easyui框架,报错后想跳回登录界面,可是一直跳转不出去求大神帮忙解决
跳转方法:
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new LoginCheckFilterAttribute() { IsCheck = true });//判断是否登录
filters.Add(new MyHandleErrorAttribute());//新建全局的异常处理
}
}
///
/// 处理异常
///
public class MyHandleErrorAttribute : HandleErrorAttribute
{public override void OnException(ExceptionContext filterContext) { base.OnException(filterContext); string bcxx = filterContext.Exception.Message;//报错信息 string bcff = filterContext.Exception.TargetSite.ToString();//报错方法 string bcdx = filterContext.Exception.Source;//报错对象 string bcwz = filterContext.Exception.StackTrace;//引发异常位置 //PublicClass.AddLog("报错信息:"+bcxx+"报错方法:"+bcff+"报错对象:"+bcdx+"报错位置:"+bcwz, 1);//写入报错日志 string response_js = "<script>window.parent.location.href='~/html/Error.html';</script>"; filterContext.HttpContext.Response.Redirect("~/html/Error.html");//异常处理界面(友好界面) //跳转到登陆页 //filterContext.HttpContext.Response.Write(response_js); } } 视图报错的效果: /// <summary> /// 职员信息视图 /// </summary> /// <returns></returns> public ActionResult WorkersInfo() { int a = 0; int b = 1 / a; return View(); } ![图片说明](http://img.ask.csdn.net/upload/201510/20/1445313489_414036.png) 独立方法的效果: public string ces() { int a = 0; int b = 1 / a; return ""; }![图片说明](http://img.ask.csdn.net/upload/201510/20/1445313657_186858.png) 两种情况都不能直接跳回框架显示异常信息
解决方案
在客户端判断下ajax返回值是否包含过滤器抛出的错误内容,包含用location.href进行跳转,服务器端的跳转ajax请求后获取的是跳转后的内容,浏览器是不会自动跳转的
datagrid增加onLoadError事件
$('#dg').datagrid({onLoadError:function(xhr){
var s=xhr.responseText
alert('服务器端返回内容:'+s);
if(s.indexOf('超时异常错误信息,或者你的error.html中包含的特殊内容'))location='登录页面'
});
时间: 2024-08-03 16:37:43