SPP.NET MVC的Action和Result、异常过滤器以及过滤器优先级、多重过滤器

来源:互联网 发布:怎么用淘宝卖东西 编辑:程序博客网 时间:2024/06/06 21:01

1.微软提供的默认的过滤器如下:

Authorization filter:实现IAuthorizationFilter,在所有Filter和Action执行之前执行,默认继承AuthorizationAtrribute抽象类

Action Filter实现接口IActionFilter,分别在Action执行之前和执行之后,默认继承ActionFilterAttribute抽象类

Result Filter实现接口IResult Filter,分别在Result 执行之前和执行之后,默认继承Result FilterAttribute抽象类

Exception Filter实现接口IException  Filter,分只有在filter或者Action method或者Action Result出现异常时执行,默认继承HandleErrorAttribute类

具体实现如下代码:

1.在Models下面建一个类:MyActionFilterAttribute

namespace MvcApplication1.Models
{
public class MyActionFilterAttribute : ActionFilterAttribute
{
public string name { get; set; }

public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted(filterContext);
HttpContext.Current.Response.Write("<br/>Action Executed:"+name);
}

public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
HttpContext.Current.Response.Write("<br/>Action Executing:" + name);
}

public override void OnResultExecuted(ResultExecutedContext filterContext)
{
base.OnResultExecuted(filterContext);
HttpContext.Current.Response.Write("<br/>Result Executed:" + name);
}

public override void OnResultExecuting(ResultExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
HttpContext.Current.Response.Write("<br/>Result Executing:" + name);
}
}
}

2.然后再控制器中添加如下代码:这样只是设置MyFilter视图的过滤器。

3.还可以设置全局过滤器:全局过滤器,优先级最低,但是可以作用到所有的控制器和action


当设置单个过滤器以及整个Controller的控制器、全局控制器并存时,根据优先级只执行单个过滤,这时只需要在自定义的过滤器代码上定义求权限即可,具体如下图所示:


0 0
原创粉丝点击