zoukankan      html  css  js  c++  java
  • MVC过滤器

    新建自己的过滤器.cs,方法和和视图过滤器都继承
    ActionFilterAttribute
    方法重写
    OnActionExecuting
    OnActionExecuted
     
    视图重写
    OnResultExecuting
    OnResultExecuted
    只要是Action方法都会交内部处理调用这二个方法 
     
    而filterContext.RouteData.Values["controller"].ToString();filterContext.RouteData.Values["action"].ToString();可以直接拿到从Url传过来的方法名和控制器名
    RouteData里面主要储存了匹配的路由信息
    如果本次请求的是请求了某个区域里的控制器方法,还可以通过
    filterContext.RouteData.DataTokens["area"].Value.ToString();拿到区域名称
     
    补充Filter:
     string actionName = filterContext.ActionDescriptor.ActionName;
                string controllerName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
                //检查 被 请求方法是否加了MoneyAttribute特性
                if (filterContext.ActionDescriptor.IsDefined(typeof(Filters.MoneyAttribute), false))
                {
                    //直接为请求设置返回结果,而不执行对应的Action方法,可见html源码,也不执行OnActionExecuted,但是是会执行Result过滤器和生成Result结果
                    //filterContext.Result = new ContentResult();
                    filterContext.Result = new ContentResult() { Content = "<br />哈哈被跳过了吧<br />" };
     
                }
     
    走向图如下:
  • 相关阅读:
    基于事件的异步编程
    基于任务的异步编程
    C#异步编程
    C#2.0
    Mac上安装Brew
    PHP中三维数组转二位数组,并且根据某个字段去重
    LNMP环境安装Laravel之后, 除了根目录下可以访问, 其他都是404页面
    LNMP一键安装包安装的mysql远程连接不上的问题
    CentOS7 安装Redis4.0
    CentOS 7 源码包安装SVN及使用
  • 原文地址:https://www.cnblogs.com/caigen029/p/3575684.html
Copyright © 2011-2022 走看看