zoukankan      html  css  js  c++  java
  • MVC过滤器基本使用

        Action过滤器
    /// <summary>
    /// 执行代码前执行
    /// </summary>
    /// <param name="filterContext"></param>
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
      //1.显示触发过滤器action方法的名称
      string actionName = filterContext.ActionDescriptor.ActionName;
       filterContext.HttpContext.Response.Write("ActionName=" + actionName + "</br>");
      //2.显示触发过滤器action方法所在的控制器
      string ctrlName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
      filterContext.HttpContext.Response.Write("ControllerName=" + ctrlName + "</br>");
      //3.判断当前action方法是否贴有[HttpGet]特性标签
      bool isTrue = filterContext.ActionDescriptor.IsDefined(typeof(HttpGetAttribute), false);
      filterContext.HttpContext.Response.Write("当前action是否贴有[httpGet]特性" + isTrue + "</br>");
      //4.获取当前action方法上贴有[HttpGet]特性标签的实例
      object[] httpGets = filterContext.ActionDescriptor.GetCustomAttributes(typeof(HttpGetAttribute), false);
      foreach (object obj in httpGets)
      {
      filterContext.HttpContext.Response.Write("获取当前action方法上贴有[HttpGet]特性标签的实例:" + obj.ToString() + "</br>");
      }
      //5.记录当前action方法的实际参数
      ParameterDescriptor[] dics = filterContext.ActionDescriptor.GetParameters();
      foreach(ParameterDescriptor dic in dics)
      {
      //打印action参数名称
      filterContext.HttpContext.Response.Write("记录当前action方法的实际参数:" + dic.ParameterName.ToString() + "</br>");
      }
      base.OnActionExecuting(filterContext);
    }
    /// <summary>
    /// 执行代码后执行
    /// </summary>
    /// <param name="filterContext"></param>
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
      base.OnActionExecuted(filterContext);
    }
    /// <summary>
    /// 返回结果前执行
    /// </summary>
    /// <param name="filterContext"></param>
    public override void OnResultExecuting(ResultExecutingContext filterContext)
    {
        base.OnResultExecuting(filterContext);
    }
    /// <summary>
    /// 返回结果后执行
    /// </summary>
    /// <param name="filterContext"></param>
    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        base.OnResultExecuted(filterContext);
    }
     
    异常过滤器:HandleErrorAttribute
    public override void OnException(ExceptionContext filterContext)
    {
        //1.获取异常对象
        Exception ex= filterContext.Exception;
        //2.将异常写入日志
        //2.1写入记录日志的具体实现过程略...
        //3.告诉mvc框架,过滤器已处理异常,不需要额外处理
        filterContext.ExceptionHandled = true;
        base.OnException(filterContext);
    }
     
    配置错误页:
    1 <customErrors mode="On" defaultRedirect="Error">
    2     <error statusCode="404" redirect="~/ErrorMgr/P404" />
    3     <error statusCode="500" redirect="~/ErrorMgr/P500"/>
    4 </customErrors>
  • 相关阅读:
    【bzoj2500】幸福的道路 树形dp+单调队列
    【ARC069F】Flags 2-sat+线段树优化建图+二分
    【bzoj2437】[Noi2011]兔兔与蛋蛋 二分图最大匹配+博弈论
    剑指offer——树的子结构
    剑指offer——反转链表
    腾讯算法岗面试算法题——计数排序
    作业帮面试题
    剑指offer——重建二叉树
    剑指offer——二维数组中的查找
    删除链表中重复的结点
  • 原文地址:https://www.cnblogs.com/notniu/p/3898265.html
Copyright © 2011-2022 走看看