Net Core 页面的生命周期 + OnActionExecuting
十年河东,十年河西,莫欺少年穷
学无止境,精益求精
NetCore页面的生命周期如下图:
具体代码执行顺序如下:
控制器基类
public class MoviesController : BaseController { private readonly MvcMovieContext _context; /// <summary> /// 第2步执行基类的构造函数 /// </summary> /// <param name="context"></param> public MoviesController(MvcMovieContext context) { _context = context; } /// <summary> /// 第5步执行Action方法 /// </summary> /// <returns></returns> public async Task<IActionResult> Index() { return View(await _context.Movie.ToListAsync()); } }
父控制器类
public class BaseController : Controller { /// <summary> /// 第1步 执行父类控制器构造函数 /// </summary> public BaseController() { } /// <summary> /// 第3步 执行父类的异步方法 异步方法 似乎可以和OnActionExecuting同时执行 /// </summary> /// <param name="context"></param> /// <param name="next"></param> /// <returns></returns> public override Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next) { return base.OnActionExecutionAsync(context, next); } /// <summary> /// 第4步 执行OnActionExecuting方法 /// </summary> /// <param name="context"></param> public override void OnActionExecuting(ActionExecutingContext context) { base.OnActionExecuting(context); } /// <summary> /// 第6步 Aciton执行完毕后 执行 OnActionExecuted /// </summary> /// <param name="context"></param> public override void OnActionExecuted(ActionExecutedContext context) { base.OnActionExecuted(context); } }
以上便是NetCore 子父控制器执行顺序。
本人初学NetCore,我认为基础决定上层建筑,要想走的更远,更高,就必须一丝不苟的学习NetCore基础。谢谢。
@天才卧龙的博客