ASP.NET mvc4中的过滤器的使用

2019-05-25 22:31:49王冬梅

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 name="viewport" 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

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