我不明白问题出在哪里。
我有一个 AJAX 调用,它向 Controller 传递一个对象,其中包含一些要下载的文件路径。
这是 AJAX 调用:
var listD = [];
listD.push("Some Text");
listD.push("Some other Text");
var oList = {};
oList.Urls=listD;
$.ajax({
method: 'POST',
url: '/api/file/DownloadM/',
data: JSON.stringify(oList),
contentType: "application/json; charset=utf-8",
success: function (response) {
alert("OOOOOOK");
},
error: function (response) {
alert("NOOOOOOO");
} });
我的应用程序中有一个名为 DownloadUrls 的模型:
public class DownloadUrl
{
string[] Urls { get; set; }
}
这是我的方法:
[Route("api/file/downloadM/")]//{username}")]
[HttpPost]
public HttpResponseMessage DownloadM(DownloadUrl postedData) {
--do some stuff---
}
我不明白为什么我的 postedData 是一个 Urls 属性设置为 null 的对象。 如果我将 postedData 声明为对象,我会得到我的 JSON 文本。
我错过了什么?我是 Web 开发的新手,我会开始用我的头毁掉 table 。
最佳答案
您不应该将您在 jquery Ajax 调用的数据字段中传递的对象字符串化。
尝试跳过 JSON.stringify():
$.ajax({
method: 'POST',
url: '/api/file/DownloadM/',
data: oList,
contentType: "application/json; charset=utf-8",
success: function (response) {
alert("OOOOOOK");
},
error: function (response) {
alert("NOOOOOOO");
}
});
编辑:我还注意到您类(class)中的 Urls 属性未标记为公共(public)。确保将其标记为公共(public),以便模型绑定(bind)器可以成功填充该属性。
public class DownloadUrl
{
public string[] Urls { get; set; }
}
关于javascript - Ajax post 发送 JSON 到方法结果为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54519481/