![](/img/trans.png)
[英]Template for new ASP.NET Core Razorpage in Visual Studio 2017
[英]Cannot post JSON to an ASP.NET Core RazorPage handler
我正在使用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请求并将其绑定到我的媒体资源?
将urlsearchparams与formdata一起使用。
在这篇文章中,您可以找到更多信息。 如何使用获取API发布表单数据?
通过添加FromBody
类似于ASP.NET Web API 2的工作原理),我可以使Binding工作正常。
[BindProperty, FromBody]
public BroadcastMessageEditingViewModel BindingInfo { get; set; }
您最好将数据发布到API端点而不是页面控制器。 从ControllerBase创建一个类,它将正确处理您的JSON发布。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.