ASP.NET mvc4中的过滤器的使用(2)

Mode属性的默认值是RemoteOnly在开发期间,HandleErrorAttribute将不会拦截异常,但当应用程序部署到产品服务器时,并从另一台计算机发出请求时HandleErrorAttribute变生效

[HandleError(ExceptionType =typeof(ArgumentNullException),View ="Null")] public ActionResult Index(){ return View(); }

在渲染视图时HandleErrorAttribute过滤器会传递一个HandleErrorInfo视图模型对象这是一个封装了异常细节的封装程序

名称

 

类型

 

描述

 

ActionName

 

String

 

返回生成异常的Action名称

 

ControllerName

 

String

 

返回生成异常的Controller名称

 

Exception

 

Exception

 

返回此异常

 

@model HandleErrorInfo @{ ViewBag.Title = "Sorry"; } <!DOCTYPE html> <html> <head> <meta content="width=device-width" /> </head> <body> @Model.Exception.StackTrace </body> </html>

备注:使用HandleError过滤器时一定要包含Model.Exception.StackTrace否则视图不会显示给用户,引用没必要给用户展示堆栈信息所以可以将该值放入div并隐藏

 动作过滤器

用于任何目的的多用途过滤器

namespace System.Web.Mvc{ // 摘要:定义操作筛选器中使用的方法。 public interface IActionFilter{ // 摘要:在执行操作方法后调用。 // 参数:filterContext: // 筛选器上下文。 void OnActionExecuted(ActionExecutedContext filterContext); // 摘要:在执行操作方法之前调用。 // 参数:filterContext: // 筛选器上下文。 void OnActionExecuting(ActionExecutingContext filterContext); } }

ActionExecutingContext 属性

名称

 

类型

 

描述

 

ActionDescriptor

 

ActionDescriptor

 

动作方法的描述

 

Result

 

ActionResult

 

动作方法的结果,设置属性非空值,过滤器可以取消请求

 

ActionExecutedContext 属性

名称

 

类型

 

描述

 

ActionDescriptor

 

ActionDescriptor

 

动作方法的描述

 

Canceled

 

Bool

 

如果该动作被另一个过滤器取消,则返回true

 

Exception

 

Exception

 

返回由另一个过滤器或动作方法抛出的异常

 

ExceptionHandled

 

Bool

 

如果异常被处理返回true

 

Result

 

ActionResult

   

结果过滤器:

它会对动作方法所产生的结果进行操作

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdpxgd.html