• 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>
  • 相关阅读:
    office(Word、Excel、PPT等图标异常和桌面无新建解决方案)
    CentOS7安装搭建.Net Core 2.0环境-详细步骤
    Win7系统system进程句柄数一直增加解决方案
    安装.Net Framework 4.6.2时出现“无法建立到信任根颁发机构的证书链”解决方法
    css关于定位那些事情
    1份2015计划书
    js关于弹也遮罩层
    每日一句(2014-10-23)
    每日一句(2014-10-17)
    每日一句(2014-10-16)
  • 原文地址:https://www.cnblogs.com/notniu/p/3898265.html
Copyright © 2020-2023  润新知