在ASP.NET MVC中,有一个Result拦截器,实现ResultFilter需要继承一个类(System.Web.Mvc.FilterAttribute)和实现一个类(System.Web.Mvc.IResultFilter),
System.Web.Mvc.IResultFilter接口有两个方法:
1、OnResultExecuting方法在操作结果执行之前调用。
2、OnResultExecuted方法在在操作结果执行后调用。
下面是我测试的代码:
1、先新建一个ResultFillterAttribute类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace AttributeDemo.Common
{
/// <summary>
/// Result拦截器
/// </summary>
public class ResultFillterAttribute : System.Web.Mvc.FilterAttribute, System.Web.Mvc.IResultFilter
{ #region 执行完action后调用
/// <summary>
/// 执行完action后调用
/// </summary>
/// <param name="filterContext"></param>
void System.Web.Mvc.IResultFilter.OnResultExecuted(System.Web.Mvc.ResultExecutedContext filterContext)
{ }
#endregion #region 在操作结果执行之前调用
/// <summary>
/// 在操作结果执行之前调用。
/// </summary>
/// <param name="filterContext"></param>
void System.Web.Mvc.IResultFilter.OnResultExecuting(System.Web.Mvc.ResultExecutingContext filterContext)
{ }
#endregion }
}
2、新建一个ResultFillterTestController控制器类,在控制器或者action写属性AttributeDemo.Common.ResultFillter,即可实现对控制器或action的结果进行拦截:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc; namespace AttributeDemo.Controllers
{
/// <summary>
/// 测试Result拦截器
/// </summary>
//[AttributeDemo.Common.ResultFillter]
public class ResultFillterTestController : Controller
{
//
// GET: /ResultFillterTest/ [AttributeDemo.Common.ResultFillter]
public ActionResult TestResultFillter()
{ return View();
} public ActionResult Index()
{
return View();
} }
}