MVC过滤器
<1>
MyActionFilterAttribute.cs类
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcApp.Models { //ActionFilterAttribute这个类是继承了FilterAttribute类, 和IActionFilter, IResultFilter这两个接口的,就表名这个ActionFilterAttribute抽象类既是Action的过滤器,也是一个视图结果的过滤器(它下面有四个虚方法供我们重写) public class MyActionFilterAttribute:ActionFilterAttribute { public string ActionName { get; set; } //Action执行之前先执行此方法 public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); HttpContext.Current.Response.Write("</br>OnActionExecuting---我在" + ActionName + "方法之前执行"); } //Action执行之后执行此方法 public override void OnActionExecuted(ActionExecutedContext filterContext) { base.OnActionExecuted(filterContext); HttpContext.Current.Response.Write("</br>OnActionExecuted---我在" + ActionName + "方法之后执行</br>"); } //视图(ActionResult)执行之前,执行此方法 public override void OnResultExecuting(ResultExecutingContext filterContext) { base.OnResultExecuting(filterContext); HttpContext.Current.Response.Write("</br>OnResultExecuting---我在" + ActionName+"方法的视图执行之前执行"); } //视图(ActionRetult)执行之后,执行此方法 public override void OnResultExecuted(ResultExecutedContext filterContext) { base.OnResultExecuted(filterContext); HttpContext.Current.Response.Write("</br>OnResultExecuted---我在" + ActionName+"方法的视图执行之后执行"); } } }
Test控制器
using MvcApp.Models; using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MvcApp.Controllers { public class TestController : Controller { // // GET: /Test/ [MyActionFilter(ActionName = "Index")] public ActionResult Index() { Response.Write("<p style='color:Red' >Action方法被执行了</p>"); return Content("<p style='color:Red' >OK 视图被渲染</p>"); } } }执行http://localhost:10577/Test/Index方法输出结果如下:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。