动作过滤器是可用于修饰动作方法或者控制器的自定义特性,框架将在执行动作之前或者之后执行动作过滤器的逻辑。实现过滤器需要创建一个继承FilterAttribute的类。或者根据希望实现的过滤器类型,创建一个继承自该类特定实现的类。
过滤器有4中类型:
授权过滤器
该过滤器在动作之前执行,用于验证是否允许当前用户完成所有的请求操作。除了继承FilterAttribute 类之外,还实现了IAuthorizationFilter接口(该接口只有一个方法OnAuthorization),可以编写自己的授权过滤器,但是大多情况,可以使用框架提供的Authorize过滤器。
异常过滤器
处理在动作方法中末被捕获的异常,扩展了基类过滤器并实现IExceptionFilter接口(该接口的唯一方法是OnException),框架提供了可配置的动作HandleError,该动作涉及到几乎所有的错误处理情况。
动作过滤器
结果过滤器
这个两个过滤器,都继承基类ActionFilterAttribute,允许指定在动作执行之前或之后以及结果执行之前或之后执行方法,动作过滤器允许使用自定义的逻辑创建自己的过滤器,框架提供这种动作的一个实现:OutputCache.
核心过滤清器:
HandleError:
启用这个异常功能:
需要两个步骤:
Web.Config 文件配置
<customErrors mode="On"></customErrors>
使用handleError特性注释动作或控制器类
[HandleError (Order = 1 ,ExceptionType = typeof(sqlException),
View = "错误处理的view名称")]
Public class ErrorController:Controller
*:ExceptionType = typeof(可以定义需要的任何错误类型如:IOExcepiton)
Order属性指定评估的异常的顺序,序号最低的最先进行评估,如果没有指定评估的异常顺序,默认值为-1.并且具有相同顺序值的过滤器的评估顺序不确定。
Authorize:
授权过滤器这个功能是通过Authorize过滤器提供的,这个过滤器利用Asp.net Membership Provider 验证当前用户是否通过认证并授权执行动作。
示例:
[Authorize]
Pubic ActionResult About(){}
通过验证后才能执行about 动作
[Authorize ( Users = "lin, su")]
Public ActionResult About(){}
[Authorize (Roles = "Admin")]
Pubic ActinResult About(){}
ValidateInput:
特定的动作禁用验证:需要就是使用ValidateInput特性修饰动作,并将唯一的参数设置为false(默认为true)
示例:
[ValidateInput (fasle)]
Public ActionResult UpateTest(){}
OutputCache
接收缓存的结果,输出缓存,助于程序承受更高的流量
示例:
[OutputCache (Duration= 60 ,VaryByParam = "none")]
Public ActinrResult Index(){
ViewData["Msg"]="Now it's"+DateTime.Now.ToLongTimeSting();
Return View();
}