ASP.NET MVC的Action方法

开发 后端
本文介绍ASP.NET MVC的Action方法,Action过滤器是自定义的Attributes,用来标记添加Action方法之前或者Action方法之后的行为到控制器类中的Action方法中。

有时候你想在调用Action方法之前或者Action方法之后处理一些逻辑,为了支持这个,ASP.NET MVC允许你创建action过滤器。Action过滤器是自定义的Attributes,用来标记添加Action方法之前或者Action方法之后的行为到控制器类中的Action方法中。

一些可能用到Action过滤器的地方有:
◆日志,异常处理
◆身份验证和授权 - 限制用户的访问
◆输出缓存 - 保存一个Action的结果
◆网络爬虫的过滤
◆本地化
◆动态Action - 将一个Action注入到控制器中
◆ASP.NET MVC为我们提供了下面的几个Filter接口:


IActionFilter
IAuthorizationFilter
IExceptionFilter
IResultFilter

要实现一个Filter,我们需要继承自FilterAttribute类同时实现上面的一个或几个接口:

  1. public class MyFilter : FilterAttribute, IActionFilter, IResultFilter{  

其中OnActionExecuting在执行Action方法之前会被调用,OnActionExecuted会在Action方法执行后调用。注意他们的参数分别是ActionExecutingContext和ActionExecutedContext。

ActionExecutedContext类包含一个 Canceled的属性,允许你取消当前的Action(怎么原来在P3中是在ActionExecutingContext的Canceled属性在 P5中没有了呢?神奇.那么在OnActionExecuting的时候怎么取消一个Action呢?)。

FilterExcutedContext 类包含一个Exception属性和一个ExceptionHandled属性。如果Exception属性为null,则没有异常在action stack中,表明Action方法运行并没有发生错误。反之则为出现异常。如果将ExceptionHandled属性设置为true则表明在这个 Filter中已经处理了异常。

他们分别在Action返回结果(例如return View();)之前和之后执行。和IActionFilter差不多就不多说了。

IAuthorizationFilter是一个用于身份验证的Filter。只提供了一个void OnAuthorization(AuthorizationContext filterContext)方法。

IExceptionFilter会在出现异常的时候调用,也是只 提供一个void OnException(ExceptionContext filterContext)的方法;

以上介绍ASP.NET MVC的Action方法

【编辑推荐】

  1. 介绍ASP.NET 2.0虚拟主机
  2. 浅谈ASP.NET应用程序
  3. 优化ASP.NET 2.0 Profile Provider
  4. 浅谈ASP.NET管道优化
  5. 介绍ASP.NET Routing引擎
责任编辑:佚名 来源: IT专家网
相关推荐

2009-07-22 10:13:31

异步ActionASP.NET MVC

2009-03-06 10:28:30

MVCASP.NET异步Action

2009-02-16 10:05:11

ActionMVCASP.NET

2009-02-17 09:22:14

ActionMVCASP.NET

2009-09-10 09:50:47

ASP.NET MVC

2009-07-24 13:20:44

MVC框架ASP.NET

2009-07-22 09:36:54

使用UpdataModASP.NET MVC

2009-07-31 12:43:59

ASP.NET MVC

2021-03-08 07:32:05

Actionweb框架

2009-07-22 15:02:02

ASP.NET MVC

2009-07-22 10:34:37

ActionInvokASP.NET MVC

2009-07-20 15:44:32

ASP.NET MVC

2015-06-17 17:01:48

ASP.NET

2009-07-22 10:09:59

ASP.NET MVC

2009-07-23 15:44:39

ASP.NET MVC

2009-07-23 14:31:20

ASP.NET MVC

2009-07-22 13:24:24

ASP.NET MVC

2009-07-20 10:53:59

ASP.NET MVC

2011-09-22 10:58:56

ASP.NET

2010-03-12 09:38:58

点赞
收藏

51CTO技术栈公众号