标签:项目 highlight 执行 base 首页 常用 ted AC png
当我们进行项目开发时,往往在开发过程中需要临时加入一些常用功能性代码,如身份验证、日志记录、异常获取等功能。如果每个方法中都加入这些功能性代码的话,无疑使项目显得过于臃肿,代码繁杂。这时候就要加入过滤器了。.net framework及.net core中都支持非常简单的过滤器操作:Filter。它能在函数执行前或执行后切入函数。而不需要修改原来的代码,使项目更加清晰。
下面讲解Filter在.net core MVC中的用法。
首先,新建.net core mvc web应用程序,然后加入MyFilter类,继承ActionFilterAttribute
public class MyFilter : ActionFilterAttribute { public string Message { get; set; } public override void OnActionExecuting(ActionExecutingContext filterContext) { base.OnActionExecuting(filterContext); filterContext.HttpContext.Response.Write("<br />" + "执行OnActionExecuting:" + Message + "<br />"); } public override void OnActionExecuted(ActionExecutedContext filterContext) { base.OnActionExecuted(filterContext); filterContext.HttpContext.Response.Write("<br />"+ "执行OnActionExecuted:" + Message + "<br />"); } public override void OnResultExecuting(ResultExecutingContext filterContext) { base.OnResultExecuting(filterContext); filterContext.HttpContext.Response.Write("<br />" + "执行OnResultExecuting:" + Message + "<br />"); } public override void OnResultExecuted(ResultExecutedContext filterContext) { base.OnResultExecuted(filterContext); filterContext.HttpContext.Response.Write("<br />" + "执行OnResultExecuted:" + Message + "<br />"); } }
然后在Home控制器中的Action中加入过滤器
public class HomeController : Controller { [MyFilter(Message ="首页")] public ActionResult Index() { return Content("<br />" + "执行Index中的内容"+ "<br />"); } [MyFilter(Message = "关于页面")] public ActionResult About() { return Content("<br />" + "执行About中的内容" + "<br />"); } }
这时候运行项目:/Home/Index,打印出如下内容:
运行/Home/About,打印出如下内容:
由此可以发现:执行循序是:OnActionExecuting>OnActionExecuted>OnResultExecuting>Action>OnResultExecuted
(Action执行之前执行OnActionExecuting,Action执行之后执行OnActionExecuted,Action返回之前执行OnResultExecuting,Action返回之后执行OnResultExecuted)
标签:项目 highlight 执行 base 首页 常用 ted AC png
原文地址:https://www.cnblogs.com/ontheroute/p/9113976.html