十年河東,十年河西,莫欺少年窮
學無止境,精益求精
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基礎。謝謝。
@天才卧龍的博客
