admin管理员组文章数量:1130349
【MVC
APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理。这时候就用到了过滤器。
自定义过滤器:
若要自定义一个过滤器,则要继承ActionFilterAttribute类,这个类是一个抽象类,实现了IActionFilter和IResultFilter接口,主要通过重写四个虚方法来达到在行为方法执行和返回的前后注入逻辑。
| 方法 | 参数 | 描述 |
| OnActionExecuting | ActionExecutingContext | 在行为方法执行前执行 |
| OnActionExecuted | ActionExecutedContext | 在行为方法执行后执行 |
| OnResultExecuting | ResultExecutingContext | 在行为方法返回前执行 |
| OnResultExecuted | ResultExecutedContext | 在行为方法返回后执行 |
public class MyCustormFilter:ActionFilterAttribute{// 摘要: // 在执行操作方法后由 ASP.NET MVC 框架调用。//// 参数: // filterContext:// 筛选器上下文。public override void OnActionExecuted(ActionExecutedContext filterContext){filterContext.HttpContext.Response.Write("OnActionExecuted > 在执行操作方法后由 ASP.NET MVC 框架调用<br/>");base.OnActionExecuted(filterContext);}//// 摘要: // 在执行操作方法之前由 ASP.NET MVC 框架调用。//// 参数: // filterContext:// 筛选器上下文。public override void OnActionExecuting(ActionExecutingContext filterContext){filterContext.HttpContext.Response.Write("OnActionExecuting > 在执行操作方法之前由 ASP.NET MVC 框架调用<br/>");base.OnActionExecuting(filterContext);}//// 摘要: // 在执行操作结果后由 ASP.NET MVC 框架调用。//// 参数: // filterContext:// 筛选器上下文。public override void OnResultExecuted(ResultExecutedContext filterContext){filterContext.HttpContext.Response.Write("OnResultExecuted > 在执行操作结果后由 ASP.NET MVC 框架调用<br/>");base.OnResultExecuted(filterContext);}//// 摘要: // 在执行操作结果之前由 ASP.NET MVC 框架调用。//// 参数: // filterContext:// 筛选器上下文。public override void OnResultExecuting(ResultExecutingContext filterContext){filterContext.HttpContext.Response.Write("OnResultExecuting > 在执行操作结果之前由 ASP.NET MVC 框架调用<br/>");base.OnResultExecuting(filterContext);}}我们新建Home控制器,并且新增Index视图,在Home控制器的Index方法上加上过滤器,代码如下:
public class HomeController : Controller{//// GET: /Home/[MyCustormFilter]public ActionResult Index(){return View();}}
过滤器经常用于权限过滤,登录状态控制过滤,异常处理过滤器。
自定义过滤器中的全局过滤器:
修改Global.asax中的代码如下:
// 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,// 请访问 /?LinkId=9394801public class MvcApplication : System.Web.HttpApplication{protected void Application_Start(){AreaRegistration.RegisterAllAreas();WebApiConfig.Register(GlobalConfiguration.Configuration);//FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);}//添加全局过滤器public static void RegisterGlobalFilters(GlobalFilterCollection filters){filters.Add(new Filter.MyCustormFilter());}}添加Son页面,运行程序:在每一个控制器中执行的Action方法都先经过全局过滤器。
【MVC
APS.NET MVC中的每一个请求,都会分配给相应的控制器和对应的行为方法去处理,而在这些处理的前前后后如果想再加一些额外的逻辑处理。这时候就用到了过滤器。
自定义过滤器:
若要自定义一个过滤器,则要继承ActionFilterAttribute类,这个类是一个抽象类,实现了IActionFilter和IResultFilter接口,主要通过重写四个虚方法来达到在行为方法执行和返回的前后注入逻辑。
| 方法 | 参数 | 描述 |
| OnActionExecuting | ActionExecutingContext | 在行为方法执行前执行 |
| OnActionExecuted | ActionExecutedContext | 在行为方法执行后执行 |
| OnResultExecuting | ResultExecutingContext | 在行为方法返回前执行 |
| OnResultExecuted | ResultExecutedContext | 在行为方法返回后执行 |
public class MyCustormFilter:ActionFilterAttribute{// 摘要: // 在执行操作方法后由 ASP.NET MVC 框架调用。//// 参数: // filterContext:// 筛选器上下文。public override void OnActionExecuted(ActionExecutedContext filterContext){filterContext.HttpContext.Response.Write("OnActionExecuted > 在执行操作方法后由 ASP.NET MVC 框架调用<br/>");base.OnActionExecuted(filterContext);}//// 摘要: // 在执行操作方法之前由 ASP.NET MVC 框架调用。//// 参数: // filterContext:// 筛选器上下文。public override void OnActionExecuting(ActionExecutingContext filterContext){filterContext.HttpContext.Response.Write("OnActionExecuting > 在执行操作方法之前由 ASP.NET MVC 框架调用<br/>");base.OnActionExecuting(filterContext);}//// 摘要: // 在执行操作结果后由 ASP.NET MVC 框架调用。//// 参数: // filterContext:// 筛选器上下文。public override void OnResultExecuted(ResultExecutedContext filterContext){filterContext.HttpContext.Response.Write("OnResultExecuted > 在执行操作结果后由 ASP.NET MVC 框架调用<br/>");base.OnResultExecuted(filterContext);}//// 摘要: // 在执行操作结果之前由 ASP.NET MVC 框架调用。//// 参数: // filterContext:// 筛选器上下文。public override void OnResultExecuting(ResultExecutingContext filterContext){filterContext.HttpContext.Response.Write("OnResultExecuting > 在执行操作结果之前由 ASP.NET MVC 框架调用<br/>");base.OnResultExecuting(filterContext);}}我们新建Home控制器,并且新增Index视图,在Home控制器的Index方法上加上过滤器,代码如下:
public class HomeController : Controller{//// GET: /Home/[MyCustormFilter]public ActionResult Index(){return View();}}
过滤器经常用于权限过滤,登录状态控制过滤,异常处理过滤器。
自定义过滤器中的全局过滤器:
修改Global.asax中的代码如下:
// 注意: 有关启用 IIS6 或 IIS7 经典模式的说明,// 请访问 /?LinkId=9394801public class MvcApplication : System.Web.HttpApplication{protected void Application_Start(){AreaRegistration.RegisterAllAreas();WebApiConfig.Register(GlobalConfiguration.Configuration);//FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);RegisterGlobalFilters(GlobalFilters.Filters);RouteConfig.RegisterRoutes(RouteTable.Routes);}//添加全局过滤器public static void RegisterGlobalFilters(GlobalFilterCollection filters){filters.Add(new Filter.MyCustormFilter());}}添加Son页面,运行程序:在每一个控制器中执行的Action方法都先经过全局过滤器。
本文标签: MVC
版权声明:本文标题:【MVC 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/IT/1686650292a20371.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论