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>

 

MVC过滤器基本使用,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。