In Asp.Net Core Razor Page, If both OnGet() and OnGetAsync() exist in the same PageModel, which one is called?
4 phương ánCó giải thích
Các phương án trả lời
Chọn một phương ánLời giảiChọn phương án để mở
Đáp án đúng: "Runtime error". Khi chọn handler, Razor Pages bỏ hậu tố "Async" khỏi tên phương thức. Do đó OnGet và OnGetAsync cùng quy về một handler cho phương thức GET, và bộ chọn DefaultPageHandlerMethodSelector tìm thấy HAI ứng viên cùng khớp nên ném InvalidOperationException với thông báo nhiều handler cùng khớp. Đây là lỗi phát sinh LÚC CHẠY. Trình biên dịch không báo lỗi vì hai phương thức có tên khác nhau là hoàn toàn hợp lệ trong C#, nên phương án "Compilation error" bị loại; và framework không tự ưu tiên bản đồng bộ hay bất đồng bộ, nên "OnGet() only" và "OnGetAsync() only" đều sai.