Я работаю с ASP.NET Core RazorPage в качестве альтернативы контроллеру MVC, и я хочу иметь возможность отправлять форму на стороне клиента через XMLHttpRequest. Я уже выяснил биты токена XSRF, чтобы пройти проверку, но структура RazorPages, похоже, не обрабатывает входящие полезные данные JSON и не привязывает их к свойству, как ожидалось.
Некоторый код:
Модель страницы (.cshtml.cs):
public class IndexModel : PageModel
{
private Database database;
private ILogger logger;
[BindProperty]
public AddRequestModel MyRequest { get; set; }
public IndexModel(Database database, ILogger<IndexModel> logger)
{
this.database = database;
this.logger = logger;
}
public void OnGet() {}
public IActionResult OnPostValidate()
{
if (ModelState.IsValid)
{
// ...
}
return new BadRequestObjectResult(ModelState);
}
public async Task<IActionResult> OnPutConfirmAsync()
{
// ...
}
}
И сообщение на стороне клиента:
const url = "?handler=validate";
const data = { MyRequest: this.fields };
await axios.post(url, data);
Я убедился, что данные отправляются правильно:
Этот заголовок X-XSRF-TOKEN добавляется axios перед отправкой запроса. Тот факт, что сервер отвечает списком ошибок, указывает на то, что проблема не в токене XSRF:
Обратите внимание, что объект MyRequest не содержит значений из полезной нагрузки запроса - он не был привязан должным образом (в противном случае FirstName не вернул бы требуемую ошибку). Как я могу сказать RazorPages принять запрос JSON и привязать его к моему свойству?