In Asp.Net Core Razor Page, If both OnGet() and OnGetAsync() exist in the same PageModel, which one is called?

4 phương ánCó lời giảiXuất hiện trong 1 bộ đề

A·B·C·DCác phương án trả lời

AOnGet() only
BOnGetAsync() only
CCompilation error
Runtime errorĐúng

Giải thích chi tiết

Đáp án đúng: D. 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 hoàn toàn hợp lệ trong C#, nên phương án C bị loại; và framework không tự ưu tiên bản đồng bộ hay bất đồng bộ, nên A và B đều sai.

Xuất hiện trong các bộ đề