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>
  • 相关阅读:
    Redis 集群
    应用系统日志采集解决方案
    Flume学习应用:Java写日志数据到MongoDB
    一次开发逻辑规范的总结
    JSP2 自定义标签
    mysql的left join、 right join和inner join
    静态网页、动态网页、apache和tomcat之间区别和联系
    spring与shiro配置详解
    maven项目在eclipse启动报错:java.lang.ClassNotFoundException
    如何修改maven的默认jdk版本
  • 原文地址:https://www.cnblogs.com/notniu/p/3898265.html
Copyright © 2011-2022 走看看