gpt4 book ai didi

json - 将复杂的JSON发布到ASP.NET Core Controller

转载 作者:行者123 更新时间:2023-12-02 08:19:53 25 4
gpt4 key购买 nike

我的ASP.NET Core代码中包含以下模型:

public class TestItem
{
public string Id { get; set; }
public string Name { get; set; }
public List<TestSubItem> SubItems { get; set; }
}

public class TestSubItem
{
public string Id { get; set; }
}

和我的Controllers / TestController.cs中的以下方法:
    // POST: Test/Create
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create([FromBody]TestItem item)
{
// Use item here...
return View(item);
}

我的页面中包含以下JavaScript:
var mySubItems = [{"Id": "1"}];

function submitForm() {
// myForm contains an Id textbox and a Name textbox
$("#myForm").submit();
};

function doPost() {

var testItem = {
Id: "2",
Name: "testName",
SubItems: mySubItems
};

$.ajax({
url: '@Url.Action("Create" ,"Test")',
type: "POST",
contentType: "application/json",
data: JSON.stringify(testItem),
success: function (data) {
alert(data);
},
error: function (error) {
var x = error; //break here for debugging.
}
});
};

当我使用 doPost时,我总是从服务器取回 400 Bad Request。另一方面, submitForm可以正常工作,但是我不知道如何在发送到服务器的数据中包括 mySubItems

最快的方法是什么?

最佳答案

Controller 上包含[ValidateAntiForgeryToken]会引起问题。发布数据时需要包括 token 。 MVC自动将其包括在表格中,这就是为什么SubmitForm()起作用的原因。

挑战在于,我不知道如何使其与发布的JSON数据一起使用。您可以通过将以下内容添加到testItem中来:

__RequestVerificationToken: $('input[name="__RequestVerificationToken"]', form).val()

有关更多信息,请查看 include antiforgerytoken in ajax post ASP.NET MVC

关于json - 将复杂的JSON发布到ASP.NET Core Controller,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38191079/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com