【问题标题】:ASP.NET Passing json POST data to Web API Results in null dataASP.NET 将 json POST 数据传递给 Web API 结果为空数据
【发布时间】:2016-03-25 02:43:58
【问题描述】:

所以我正在尝试将数据从 textarea 发送到我的 ApiController,但它似乎根本不起作用。 这是我的 ajax(其中 value 是一个字符串数组):

function doCallback(value)
{
$.ajax({
     url: 'http://localhost:83048/api/test/function',
     type: 'POST'
     contentType: "application/json"
     dataType: 'json'
     data:
     { urls : JSON.stringify(value) },
     success......});
 }

控制器:

[HttpPost]
public async Task<List<string>> function(List<string> urls)
{
    return await Program.blabla(urls);
}

url 始终为 null,即使在 ajax 中传递的值不是(使用调试器验证)

我们将不胜感激,因为我在经过一个多小时后似乎无法弄清楚。

编辑:我已经越来越多地尝试使用谷歌搜索,似乎它仍然返回 null (当 stringified 时)并且没有时什么都没有。 此外,自从我将控制器更改为 ApiController 以来,这种情况一直在发生,如果有帮助,它在更改为 Web Api 控制器之前一直在工作。

编辑 2:尝试了 cmets 中的所有内容,但仍然没有任何效果:/

【问题讨论】:

  • 我认为 value 是一个字符串数组。尝试在不进行字符串化的情况下仅发送值。也许也将控制器参数更改为 string[]
  • @MartinMazzaDawson 仍然无法正常工作,我认为这与 value 不是列表有关,因为在我切换到 Web api 控制器之前它曾经工作过......
  • 您正在从 javascript 发送一个对象,但控制器需要一个数组。您是否尝试过仅数据:值?
  • 这里没有考虑模型是否有特定原因 - 即 Class A { public string[] Urls {get;set;}} 然后在客户端设置它,然后再发送它做一个Json.stringify?尽管如此,如果您只需要传递字符串列表,那么您不能简单地使用分隔符将它们连接起来并将它们作为一个巨大的字符串发送并在您的服务器端拆分它。
  • @peinearydevelopment value 是一个数组,我无法访问我的代码,因为我的 PC 已关闭,但 value 是 textarea 中所有行的数组,我也尝试了 data: value

标签: jquery asp.net json ajax


【解决方案1】:

将数据更改为数据:JSON.stringify(value) 使其工作

$.ajax({
 url: 'http://localhost:83048/api/test/function',
 type: 'POST'
 contentType: "application/json"
 dataType: 'json'
 data: JSON.stringify(value),
 success......});
 }

所有的麻烦都给.. dam it ahah

【讨论】:

    【解决方案2】:

    尝试将您的 urls 属性指定为数组。意义而不是传递

    { urls : JSON.stringify(value) }
    

    通过喜欢

    { urls : [JSON.stringify(value)] }
    

    注意方括号。

    【讨论】:

    • value 是一个数组,因此当您执行 json.stringfy 时,它会添加方括号。
    • 是的..它添加了方括号,但你仍然得到一个字符串值。在控制台输出中,您将看到方括号,因为它是数组的字符串表示形式。您需要传递实际的数组对象才能将其正确反序列化为操作方法的数组参数。
    猜你喜欢
    • 2020-06-26
    • 1970-01-01
    • 2013-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多