我正在使用 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);
我已验证数据已正确提交:
在提交请求之前,axios 正在添加 X-XSRF-TOKEN 标头。服务器以错误列表响应的事实表明它不是导致问题的 XSRF 令牌:
请注意,MyRequest 对象不包含请求负载中的值 - 它没有按预期绑定(否则 FirstName 不会返回所需的错误)。如何告诉 RazorPages 接受 JSON 请求并将其绑定到我的属性?