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的控制器、全局控制器并存时,根据优先级只执行单个过滤,这时只需要在自定义的过滤器代码上定义求权限即可,具体如下图所示: