C# MVC Filter过滤器如何停止往下执行
我是在过滤器中判断用户是否有权限访问该Action,不管是True还是false它都会执行完过滤器后往下执行,我想在过滤器中得到false后,终止访问往下执行,该如何做呢...
我是在过滤器中判断用户是否有权限访问该Action,不管是True还是false它都会执行完过滤器后往下执行,我想在过滤器中得到false后,终止访问往下执行,该如何做呢?
展开
5个回答
展开全部
使用这种方式是可以实现的。filterContext.Result = new RedirectResult("/Home/login");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这是开发mvc可不是开发asp,什么年代了还Response.Write呢?
设置filterContext的Result为一个ViewResult来阻止执行Action
设置filterContext的Result为一个ViewResult来阻止执行Action
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
filterContext.Result = new ContentResult(){ Content="<script..."};
//....
//....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你想要不执行action 加这句话:filterContext.Result = new EmptyResult();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当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链的执行过程。
然后根据当前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链的执行过程。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询