在ASP.NET MVC中,有一个Result拦截器,实现ResultFilter需要继承一个类(System.Web.Mvc.FilterAttribute)和实现一个类(System.Web.Mvc.IResultFilter),
System.Web.Mvc.IResultFilter接口有两个方法:
1、OnResultExecuting方法在操作结果执行之前调用。
2、OnResultExecuted方法在在操作结果执行后调用。
下面是我测试的代码:
1、先新建一个ResultFillterAttribute类:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 6 namespace AttributeDemo.Common 7 { 8 ///9 /// Result拦截器10 /// 11 public class ResultFillterAttribute : System.Web.Mvc.FilterAttribute, System.Web.Mvc.IResultFilter12 {13 14 #region 执行完action后调用15 ///16 /// 执行完action后调用17 /// 18 /// 19 void System.Web.Mvc.IResultFilter.OnResultExecuted(System.Web.Mvc.ResultExecutedContext filterContext)20 {21 22 } 23 #endregion24 25 #region 在操作结果执行之前调用26 ///27 /// 在操作结果执行之前调用。28 /// 29 /// 30 void System.Web.Mvc.IResultFilter.OnResultExecuting(System.Web.Mvc.ResultExecutingContext filterContext)31 {32 33 } 34 #endregion35 36 37 }38 }
2、新建一个ResultFillterTestController控制器类,在控制器或者action写属性AttributeDemo.Common.ResultFillter,即可实现对控制器或action的结果进行拦截:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Web; 5 using System.Web.Mvc; 6 7 namespace AttributeDemo.Controllers 8 { 9 ///10 /// 测试Result拦截器11 /// 12 //[AttributeDemo.Common.ResultFillter]13 public class ResultFillterTestController : Controller14 {15 //16 // GET: /ResultFillterTest/17 18 [AttributeDemo.Common.ResultFillter]19 public ActionResult TestResultFillter()20 {21 22 return View();23 }24 25 26 public ActionResult Index()27 {28 return View();29 }30 31 }32 }