Mvc动作过滤器

 动作过滤器是可用于修饰动作方法或者控制器的自定义特性,框架将在执行动作之前或者之后执行动作过滤器的逻辑。实现过滤器需要创建一个继承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();

}

posted @ 2012-03-23 13:46  sulin  阅读(401)  评论(0编辑  收藏  举报