我正在使用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);

我已验证数据是否正确提交:

enter image description here

在提交请求之前,axios会添加X-XSRF-TOKEN标头 . 服务器响应错误列表这一事实表明它不是导致问题的XSRF令牌:

enter image description here

请注意,MyRequest对象不包含请求有效内容中的值 - 它未按预期绑定(否则FirstName不会返回所需的错误) . 如何告诉RazorPages接受JSON请求并将其绑定到我的属性?