首页 > 代码库 > MVC过滤器基本使用
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>
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。