AJAX 将字符串数组发布到 webapi 2
Posted
技术标签:
【中文标题】AJAX 将字符串数组发布到 webapi 2【英文标题】:AJAX post string array to webapi 2 【发布时间】:2019-03-30 11:08:04 【问题描述】:这是我的 ajax 调用:
var myIds = ["A","B","C"]
$.ajax(
type: "POST",
url: /DoStuffAndThings?year=2018&name=test,
data: myIds: myIds,
traditional: false
);
这是我的控制器操作:
[HttpPost]
public void DoStuffAndThings(int year, string name, [FromBody] List<string> myIds)
// do stuff
年份和名称没有问题,但 myIds 始终为空。
我试过了
data: myIds: myIds
和 data: myIds
和 data: "": myIds
我尝试使用 Ienumerable<string>
和 List<string>
和 string[]
我尝试过传统的:真假
【问题讨论】:
【参考方案1】:模型绑定器无法解析发送数据,因为它不知道格式
使用JSON.stringify
和相应的参数
var myIds = ["A","B","C"];
$.ajax(
type: "POST",
url: "/DoStuffAndThings?year=2018&name=test",
contentType: "application/json",
dataType: "json",
data:JSON.stringify(myIds),
traditional: false
);
然后模型绑定器应该能够识别请求正文中的字符串集合。
【讨论】:
这在我指定 contentType 和 dataType 时有效【参考方案2】:向网络服务器发送数据时,数据必须是字符串。 使用 JSON.stringify() 将 javascript 对象转换为字符串。
在数据之前,使用JSON.stringify(myIds)
。
var myIds = ["A","B","C"]
$.ajax(
type: "POST",
contentType: "application/json",
dataType: 'json',
url: /DoStuffAndThings?year=2018&name=test,
data: JSON.stringify(myIds),
traditional: false
);
【讨论】:
以上是关于AJAX 将字符串数组发布到 webapi 2的主要内容,如果未能解决你的问题,请参考以下文章
使用表单数据将数组发布到使用 AJAX 的 C# WebAPI
在 ReactJS 中发布了一个字符串数组,但在 WebAPI 中得到了一个字符串
AJAX 将 JavaScript 字符串数组发布到 JsonResult 作为 List<string> 总是返回 Null?