asp.net mvc中在Filter中跳转千万不要使用Response.Redirect
2010-10-25 11:04
519 查看
如题,如果在Filter中用Response.Redirect,虽然URL是跳转了,但是之后的Filter和Action还是会执行,不仅浪费资源,还会产生一些不必要的错误,或许,这些错误仅在你的错误日志中能看到。
在Filter中错误使用跳转如下:
filterContext.HttpContext.Response.Redirect
(string.Format("{0}#{1}",
filterContext.HttpContext.Request.Url.
AbsolutePath,
filterContext.HttpContext.Request.
QueryString["r_Anchor"]));
filterContext.HttpContext.Response.Redirect
就会产生后遗症,正确使用应该是:
filterContext.Result = new RedirectResult(string.Format("{0}#{1}",
filterContext.HttpContext.Request.Url.
AbsolutePath,
filterContext.HttpContext.Request.
QueryString["r_Anchor"]));
正确代码:
在Filter中错误使用跳转如下:
public class AnchorFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!string.IsNullOrEmpty(filterContext.HttpContext.Request.QueryString["r_Anchor"])) { filterContext.HttpContext.Response.Redirect(string.Format("{0}#{1}", filterContext.HttpContext.Request.Url. AbsolutePath, filterContext.HttpContext.Request. QueryString["r_Anchor"])); return; } base.OnActionExecuting(filterContext); } }
filterContext.HttpContext.Response.Redirect
(string.Format("{0}#{1}",
filterContext.HttpContext.Request.Url.
AbsolutePath,
filterContext.HttpContext.Request.
QueryString["r_Anchor"]));
filterContext.HttpContext.Response.Redirect
就会产生后遗症,正确使用应该是:
filterContext.Result = new RedirectResult(string.Format("{0}#{1}",
filterContext.HttpContext.Request.Url.
AbsolutePath,
filterContext.HttpContext.Request.
QueryString["r_Anchor"]));
正确代码:
public class AnchorFilter : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { if (!string.IsNullOrEmpty(filterContext.HttpContext.Request.QueryString["r_Anchor"])) { filterContext.Result = new RedirectResult(string.Format("{0}#{1}", filterContext.HttpContext.Request.Url. AbsolutePath, filterContext.HttpContext.Request. QueryString["r_Anchor"])); //filterContext.HttpContext.Response.Redirect(string.Format("{0}#{1}", // filterContext.HttpContext.Request.Url. // AbsolutePath, // filterContext.HttpContext.Request. // QueryString["r_Anchor"])); return; } base.OnActionExecuting(filterContext); } }
相关文章推荐
- asp.net mvc中在Filter中跳转千万不要使用Response.Redirect[转]
- asp.net mvc 下使用 HttpResponse.Filter
- ASP.NET 使用response.redirect( "url ")跳转后,页面记录没刷新。
- 关于ASP.NET MVC中Response.Redirect和RedirectToAction的BUG (跳转后继续执行后面代码而不结束进程)以及处理方法
- asp.net mvc 下使用 HttpResponse.Filter
- ASP.NET MVC 里redirectMode="ResponseRewrite" 时候无法使用 Controller 来设置特定的错误页面。
- ASP.NET MVC- 在Area里使用RedirectToAction跳转出错的解决方法
- ASP.NET MVC使用ActionFilterAttribute实现权限限制的方法(附demo源码下载)
- asp.net MVC 3/4 equivalent to a response.filter
- asp.net 在使用Response.Redirect try{}catch{}块失效
- 使用Filter跟踪Asp.net MVC页面加载(转)
- Asp.net MVC使用Filter解除Session, Cookie等依赖
- asp.net 在使用Response.Redirect try{}catch{}块失效
- Asp.net mvc Filter 跳转
- ASP.NET页面跳转Response.Redirect抛出异常
- asp.net 在使用Response.Redirect try{}catch{}块失效 (ZT)
- ajax中使用Response.Redirect asp.net 网站中使用ajax控件
- asp.net 在使用Response.Redirect try{}catch{}块失效
- ASP.NET MVC中Filter使用
- asp.net mvc Filter拦截跳转