Javascript 型号为isn&x27;将JSON发送到MVC控制器时的t绑定
我可能忽略了一些东西,但我的JSON负载根本没有为我的控制器绑定。我曾尝试制作一个包含Javascript 型号为isn&x27;将JSON发送到MVC控制器时的t绑定,javascript,c#,json,asp.net-mvc,.net-core,Javascript,C#,Json,Asp.net Mvc,.net Core,我可能忽略了一些东西,但我的JSON负载根本没有为我的控制器绑定。我曾尝试制作一个包含聊天列表的类,但这对我也不起作用。我尝试过使用数组名,但似乎也不起作用 控制器: [HttpPost] public IActionResult UpdateChatRequest(IList<Models.UpdateChatRequestModel> request) { var model = new Models.ChatModel(); return Json(model
聊天列表的类,但这对我也不起作用。我尝试过使用数组名,但似乎也不起作用
控制器:
[HttpPost]
public IActionResult UpdateChatRequest(IList<Models.UpdateChatRequestModel> request)
{
var model = new Models.ChatModel();
return Json(model);
}
public class UpdateChatRequestModel
{
public int UserID
{
get; set;
}
public int LastID
{
get; set;
}
}
class Chat {
constructor(UserID, LastID) {
this.UserID = UserID;
this.LastID = LastID;
}
}
var chats = [new Chat(0, 1), new Chat(1, 4)];
function RequestChatUpdate() {
$.ajax({
type: "POST",
url: '/Chat/UpdateChatRequest',
data: JSON.stringify(chats),
contentType: "application/json",
success: function (data) {
alert("got response from chat update");
}
});
}
JavaScript:
[HttpPost]
public IActionResult UpdateChatRequest(IList<Models.UpdateChatRequestModel> request)
{
var model = new Models.ChatModel();
return Json(model);
}
public class UpdateChatRequestModel
{
public int UserID
{
get; set;
}
public int LastID
{
get; set;
}
}
class Chat {
constructor(UserID, LastID) {
this.UserID = UserID;
this.LastID = LastID;
}
}
var chats = [new Chat(0, 1), new Chat(1, 4)];
function RequestChatUpdate() {
$.ajax({
type: "POST",
url: '/Chat/UpdateChatRequest',
data: JSON.stringify(chats),
contentType: "application/json",
success: function (data) {
alert("got response from chat update");
}
});
}
正在从RequestChatUpdate()发送JSON
:
您需要为JSON添加名称,如下所示
var request = JSON.stringify({ 'request': chats });
那么您的ajax请求将成为
function RequestChatUpdate() {
$.ajax({
type: "POST",
url: '/Chat/UpdateChatRequest',
data: request,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
alert("got response from chat update");
}
});
}
已更新
根据说明书,上面说
为了在ASP.NET核心中正确绑定JSON,必须修改
您的操作将在参数上包含属性[FromBody]。这
告诉框架使用请求的内容类型标头
决定将哪个配置的IIInputFormatter用于模型
装订
这就是为什么你需要添加[FromBody]
我找到了答案
模型参数前面必须有[FromBody]
,如下所示:
[HttpPost]
public IActionResult UpdateChatRequest([FromBody] IList<Models.UpdateChatRequestModel> request)
{
var d = ModelState;
var model = new Models.ChatModel();
return Json(model);
}
[HttpPost]
公共IActionResult UpdateChatRequest([FromBody]IList请求)
{
var d=模型状态;
var model=新模型。ChatModel();
返回Json(模型);
}
您是否尝试更改动作中参数的类型-控制器?从IList请求)
到Models.updateCatRequestModel[]request
请尝试发送var request=JSON.stringify({'request':[{“UserID”:0,“LastID”:1},{“UserID”:1,“LastID”:4})
仍然没有结果请添加数据类型:'JSON',
让我们看看。您需要添加我建议的内容吗?不,显然,出于某种奇怪的原因,新的框架更新需要[FromBody]属性。