我們先建立 一個Filter,名字叫做TestFilter
public class TestFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.HttpContext.Session["temp"] += "TestFilter OnActionExecuting<br/>";
}
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
filterContext.HttpContext.Session["temp"] += "TestFilter OnActionExecuted<br/>";
}
public override void OnResultExecuting(ResultExecutingContext filterContext)
{
filterContext.HttpContext.Session["temp"] += "TestFilter OnResultExecuting<br/>";
}
public override void OnResultExecuted(ResultExecutedContext filterContext)
{
filterContext.HttpContext.Session["temp"] += "TestFilter OnResultExecuted<br/>";
}
}
一、應用於Action的Filter
[TestFilter]//將此Filter應用於Action
public ActionResult filteraction()
{
return View();
}
二、Controller的Filter
將Filter應用在Controller上有2種方式
1.直接將Filter應用在Controller上,如:
[TestFilter]
public class EiceController : Controller
{
}
2.重寫Controller內的
OnActionExecuting/OnActionExecuted/OnResultExecuting/OnResultExecuted的四個方法。
下面我們說幾個系統的Filter:
三、AcceptVerbs
規定頁面的訪問形式,如
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Example(){
return View();
}
四、ActionName
規定Action的名稱。
應用情境:如果不想用方法名做為Action名,或Action名為關鍵字的話,如
[ActionName("class")]
public ActionResult Example(){
return View();
}
五、NonAction
當前方法僅是普通方法不解析為Action
六、OutputCache
為Action添加緩衝
[OutputCache(Duration = 60, VaryByParam = "*")]
public ActionResult Example()
{
return View();
}
七、ValidateInput
該Action可以接受Html等危險代碼(ASP.net MVC在aspx中設定<%@ Page 的屬性無法完成等同任務。)
[ValidateInput(false)]
public ActionResult Example()
{
return View();
}
八、ValidateAntiForgeryTokenAttribute
用於驗證伺服器篡改。
[ValidateAntiForgeryToken]
public ActionResult Example()
{
return View();
}
原文地址:http://www.25175.com/200609/25175/25175_html/2010-07/3537.html