首页 > 代码库 > MVC的过滤器
MVC的过滤器
过滤器分类:
Action过滤器 View结果渲染过滤器 全局错误异常过滤器 身份验证过滤器
1.Action过滤器:在Action执行之前和执行之后分别干一些事 接口:(IActionFilter)
2.View结果渲染过滤器: 接口:(IActionFilter)
[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)] public class MyActionFilterAttribute :ActionFilterAttribute { public string Name { get; set; } //在Action执行之前先执行此方法 重写方法 执行之前先执行 public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); filterContext.HttpContext.Response.Write("<br />OnActionExecuting---"+ Name); } // public override void OnActionExecuted(ActionExecutedContext filterContext) { base.OnActionExecuted(filterContext); filterContext.HttpContext.Response.Write("<br />OnActionExecuted---" + Name); } public override void OnResultExecuting(ResultExecutingContext filterContext) { base.OnResultExecuting(filterContext); filterContext.HttpContext.Response.Write("<br />OnResultExecuting---" + Name); } public override void OnResultExecuted(ResultExecutedContext filterContext) { base.OnResultExecuted(filterContext); filterContext.HttpContext.Response.Write("<br />OnResultExecuted---" + Name); } }
怎么去调用呢?
[MyActionFilter(Name = "Home/Index")] public ActionResult Index() { Response.Write("<br />Action执行了.... <br/>"); }
注意:类上面的标签可以作用到所有控制器上的方法
所有的控制器都需要的话(全局过滤器):
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new MyActionFilterAttribute(){Name = "全局的"}); } }
调用:
控制器和类中的内容都显示:
[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = true)] public class MyActionFilterAttribute :ActionFilterAttribute {
}
MVC的过滤器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。