将 json 字符串发布到 c# mvc 方法



我有一个json字符串(javascript数组的json表示(,我想将其传递给C#控制器方法。但是,我要么将 c# 方法参数视为 null,要么未命中断点。

这是 js 代码:

$.ajax({
url: "/Home/PersistSelections",
type: 'post',
contentType: "application/json; charset=utf-8",
dataType: 'json',
data:  { "json": JSON.stringify(selectedItems) }
})

其中"seleteditems"只是一个javascript组合。

我的 c# 代码是:

[HttpPost]
public void PersistSelections([FromBody] string json)
{
}

但是,这可能不是正确的方法?我总是看到 json 参数为空。

任何提示表示赞赏!

更好的方法是利用模型绑定,而不是尝试自己发布和解析 JSON。

创建要发送的物料的模型

public class ItemModel {
//...include the desired properties
public string Description { get; set; }
public string Name { get; set; }
public decimal TotalPrice { get; set; }
//...
}

接下来更新操作以期望项目

[HttpPost]
public IActionResult PersistSelections([FromBody] ItemModel[] items) {
//access posted items
}

最后更新客户端以发布 JSON 数据

$.ajax({
url: "/Home/PersistSelections",
type: 'post',
contentType: "application/json; charset=utf-8",
dataType: 'json',
data:  JSON.stringify(selectedItems)
})

框架的内置模型绑定器应解析和绑定已发布的 JSON,并在控制器中填充对象

由于您使用contentType作为应用程序/json,这就是默认模型绑定器不起作用的原因。 如果要解决问题,请创建一个类 让我们说模型

Public Class MyModel{
Public string Json {get;set;}
}

在控制器使用中

[HttpPost]
public void PersistSelections(MyModel model)
{
}

最新更新