В соответствии с документацией
OnPageHandlerExecutionAsync : вызывается асинхронно до вызова метода-обработчика после завершения привязки модели.
Это означает, что у вас нет Result , доступного до тех пор, пока не будут вызваны обработчики OnGet / OnPost.Что вам нужно сделать, это получить базовый HandlerInstance
из контекста и преобразовать его в PageModel
.Теперь вы сможете получить доступ к ViewData
и ContentType
.
. Затем создайте свой PageResult, как показано ниже:
var result = context.HandlerInstance as PageModel;
context.Result = new PageResult
{
ViewData = result.ViewData,
ContentType = result.Request.ContentType,
StatusCode = 400,
};
Возможно, верните BadRequestObjectResult
, если ModelState
недействительно.
if (context.HandlerInstance is PageModel result) //using pattern matching
{
result.Response.StatusCode = 400;
context.Result = result.Page();
}
await Task.CompletedTask;
Причина, по которой вы получили ошибку site can't be reached
, так как при создании * 1034 не было заданной страницы.Вместо этого вы можете установить Response.StatusCode = 400
, а затем вызвать result.Page()
, который вернет PageResult
.Я проверил приведенный выше код, и он работает.Надеюсь, это поможет.