學習筆記38_過濾器
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.使用場合:
用於要檢查用戶是否登錄。
學習筆記38_過濾器