我正在使用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请求并将其绑定到我的属性?