Action过滤器:在Action执行之前和执行之后分别干一些事情
Action过滤器要实现IActionFilter。
步骤:
1.在Model文件夹中,添加一个自定义类
public class XXXXXActionFilterAttribute:ActionFilterAttribute
{
public string Name{get;set;}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnAcionExecuting(filterContext);
......;
//例如
filter.HttpContext.Respone.Wirte("<br/>........");
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
base.OnActionExecuted( filterContext);
......;
}
public override void OnResultExecuting(ActionExecutingContext filterContext)
{
base.OnResultExecuting(filterContext);
......;
}
public override void OnResultExecuted(ActionExecutedContext filterContext)
{
base. OnResultExecuted( filterContext);
......;
}
}
2.使用
在Action方法当中
[ XXXXXActionFilterAttribute("Name")]
public ActionResult Index()
{
}
***如果在控制器上放打[ XXXXXActionFilterAttribute("Name")],那么此控制器下的所有Action都会受到影响。
****如果想令所有控制器都打上ActionFilterAttribute,那么,可以到 Clobal.asax中,
FilterConfig.RegisterGlobalFilters(GlobalFilter.Filters),//RegisterGlobalFilters转到定义:
在App_Start->FilterConfig.cs->
public static void RegisterGlobalFilters(....)
{
//加上
filters.Add(new XXXXXActionFilterAttribute());
}
*
[AttributeUsage(AttributeTargets.All, AllowMultipute =false,Inherited = true)]
//表示这个FilterAttribute能再那些地方起作用,能不能打多次,即能不能过滤多次,Inherited是否能继承。
public class XXXXXActionFilterAttribute:ActionFilterAttribute{...}
3.使用场合:
用于要检查用户是否登录。