1. 程式人生 > >學習筆記38_過濾器

學習筆記38_過濾器

wirte action () stat 一些事 result 筆記 ase 登錄

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_過濾器