【问题标题】:Ajax post sending JSON to method resulting nullAjax 将 JSON 发送到方法导致 null
【发布时间】:2019-06-28 09:22:41
【问题描述】:

我不明白问题出在哪里。
我有一个 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 文本。

我错过了什么?我是网络开发的新手,我会开始用我的头来破坏桌子。

【问题讨论】:

  • 你能不能只传递一个字符串列表而不是一个带有字符串列表的对象?

标签: javascript c# jquery json model-view-controller


【解决方案1】:

您不应在 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");  
   }
}); 

编辑:我还注意到您的类中的 Urls 属性未标记为公共。确保将其标记为公共,以便模型绑定器可以成功填充属性。

public class DownloadUrl
{
      public string[] Urls { get; set; }
}

【讨论】:

  • 谢谢你的回答,但它仍然是空的
  • 谢谢!我不得不使用 JSON.stringify,但问题是课堂上缺少公众。 :)
猜你喜欢
  • 2013-05-21
  • 1970-01-01
  • 2010-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 2020-10-18
  • 1970-01-01
相关资源
最近更新 更多