我不明白问题出在哪里。
我有一个AJAX调用,该调用将带有一些文件路径的对象传递给控制器,以供下载。
这是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文本。
我想念什么?我是网络开发的新手,我将开始用脑袋破坏桌子。
答案 0 :(得分:2)
您不应在jquery Ajax调用的data字段中对要传递的对象进行字符串化。
尝试跳过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");
}
});
编辑:我还注意到您班级的Urls属性未标记为公共。确保已将其标记为公共,以便模型绑定程序可以成功填充属性。
public class DownloadUrl
{
public string[] Urls { get; set; }
}