仪器社区

C# MVC Filter过滤器如何停止往下执行

邓股瞥计婪寿 2012-10-10
我是在过滤器中判断用户是否有权限访问该Action,不管是True还是false它都会执行完过滤器后往下执行,我想在过滤器中得到false后,终止访问往下执行,该如何做呢?
评论
全部评论
854770408羅
当ActionInvoker在执行目标Action方法之前,会根据Order和Scope属性对用于封装ActionFilter的Filter对象进行排序。
然后根据当前ControllerContext和ActionDescriptro创建一个ActionExecutingContext对象,并将其作为参数依次调用所有ActionFilter的OnActionExecuting方法。
在这之后真正的目标Action方法被执行,ActionInvoker随后执行后续的筛选操作。具体来说,它根据当前ControllerContext、ActionDescriptro以及Action方法执行过程中抛出的异常创建一个ActionExecutedContext对象。该ActionExecutedContext的Cancel属性为False,如果Action方法返回一个ActionResult对象,该对象将会作为该ActionExecutedContext的Result属性。
接下来按照相反的次序依次调用ActionFilter对象的OnActionExecuted方法,执行过程中的ActionFilter可以修改ActionExecutedContext的Result属性。当整个ActionFilter链执行结束之后,ActionExecutedContext的Result属性返回的ActionResult将会作为对当前请求的响应。右图基本上反映了连同目标Action在内的整个ActionFilter链的执行过程。
19 0 2017-10-06 0条评论 回复
84250989
使用这种方式是可以实现的。filterContext.Result = new RedirectResult("/Home/login");
5 0 2013-02-21 0条评论 回复
从此再无小言裙
filterContext.Result = new ContentResult(){ Content="
//....
20 0 2012-10-11 0条评论 回复
您可能感兴趣的社区主题
加载中...
发布 评论