Мне нравится, когда я узнаю что-то новое из вопроса.Благодаря комментарию @ MikeBrind и следующим ссылкам ( Learn Page Filters и документу MS на Page Filters ) я могу ответить на этот вопрос и обновить свой код.
Iтакже есть базовый класс, который устанавливает глобальный фильтр запросов для DbContext, чтобы данные каждого пользователя отфильтровывались друг от друга.У меня есть общий метод (называемый PageLoadAsync), который я должен помнить, чтобы добавить к методам OnGet / OnPost каждой страницы.Теперь с переопределением исполняемых методов я могу добавить следующее, и нет необходимости добавлять метод в каждом подклассе.
public async override Task OnPageHandlerExecutionAsync(PageHandlerExecutingContext context, PageHandlerExecutionDelegate next)
{
await PageLoadAsync();
await base.OnPageHandlerExecutionAsync(context, next);
}
Если вы хотите ограничить его только методом OnGet, вы можете сделать что-то вродеследующее:
public override void OnPageHandlerExecuting(PageHandlerSelectedContext context)
{
if(context.HandlerMethod.MethodInfo.Name == nameof(OnGet))
{
// code placed here will only execute if the OnGet() method has been selected
}
}