2023年6月20日发(作者:)
C#中有四种Filter过滤器类型通过标签Attribute加到act。。。原⽂链接在 MVC中有四种过滤器类型 Action1、在 MVC项⽬中,新建⽂件夹Filter,然后新建类MyCustormFilter,继承⾃ActionFilterAttribute类,我们来看下ActionFilterAttribute类有如下四个⽅法,从命名我应该就可以看出他们的执⾏时机。 public class MyCustormFilter:ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { ("Action执⾏前"); onExecuting(filterContext); } public override void OnActionExecuted(ActionExecutedContext filterContext) { ("Action执⾏后"); onExecuted(filterContext); } }2、对于过滤器,我们可以把它们加在三个地⽅,⼀个是控制器上⾯(控制器下⾯的所有Action),⼀个是Action上⾯(指定标识的Action),另⼀个就是全局位置(所有控制器中的Action)。这⾥我只演⽰在Action上⾯加 [MyCustormFilter] public ActionResult Index() { return View(); } public ActionResult Index1() { return View(); }
3、build然后运⾏Result 1、新建类TestResultFilter,继承ActionFilterAttribute public class TestResultFilter:ActionFilterAttribute { ///
"); ltExecuting(filterContext); } /// <summary> /// 加载"视图" 后执⾏ /// </summary> /// <param name="filterContext"></param> public override void OnResultExecuted(ExecutedContext filterContext) { ("加载视图后执⾏ OnResultExecuted <br/>"); ltExecuted(filterContext); }}2、这⾥我把TestResultFilter过滤器加在控制器上⾯ [TestResultFilter] public class FilterTestController : Controller { [MyCustormFilter] public ActionResult Index() { return View(); } public ActionResult Index1() { return View(); } }3、运⾏看下结果注意:Result过滤器,⽆论Action的返回类型为什么(甚⾄void)都将执⾏。RouteData中保存了当前请求匹配的路由信息和路由对象修改 public override void OnActionExecuting(ActionExecutingContext filterContext) { //1.获取获取请求的类名和⽅法名 string strController = ["controller"].ToString(); string strAction = ["action"].ToString();//2.另⼀种⽅式 获取请求的类名和⽅法名 string strAction2 = Name; string strController2 = llerName; ("Action执⾏前</br>"); ("控制器:" + strController + "</br>"); ("控制器:" + strController2+"</br>"); ("Action:" + strAction + "</br>"); ("Action:" + strAction2 + "</br>"); onExecuting(filterContext); } AuthorizeAttribute1、 新建TestAuthorizeAttribute ///
OnAuthorization
"); //注释掉⽗类⽅法,因为⽗类⾥的 OnAuthorization ⽅法会调⽤的授权验证机制! //orization(filterContext); }}2、在控制器FilterTest中的Index上添加TestAuthorize标记 [MyCustormFilter] [TestAuthorize] public ActionResult Index() { return View(); }运⾏看下结果:Exception1、新建 ///
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687250417a49.html
评论列表(0条)