作为一个对象发送的对象数组

时间:2015-08-17 09:23:44

标签: c# arrays coffeescript

我以前从未遇到过这样的问题(如果我每次说的都有一美元),所以我会尽力解释它。

对于这个应用程序,我正在构建,我使用CoffeeScript作为客户端代码,使用C#作为服务器端代码。

在客户端,我有一个名为产品的数组。它包含产品名称以及该产品的ID。

我只是尝试将此阵列发送到服务器。以下是客户正在做的事情:

 $http.put("#{$config.serverAddress}UserChoice/GetTotalScoreForProducts?productIDList=" 
+ _.pluck(products, 'id')
).success (response) ->
    console.log "SUCCESS"
    console.log response
  .error ->
    console.log 'error'

这是服务器上的方法。现在我只是调试这个问题,所以只有一个变量用于显示我传递的数组的长度:

    [HttpPut]
    public void GetTotalScoreForProducts([FromUri] object[] productIDList)
    {
        int length = productIDList.Length;
    }

调试时,object[] productIDList只包含一个对象。但是,该对象包含数组中id的两者

enter image description here

因此,出于某种原因,两个单独的数组对象被放入一个对象中。

问题似乎在于我如何将产品数组传递到服务器,但我似乎无法弄清楚我做错了什么。

非常感谢任何帮助。

感谢您的时间。

编辑:尝试T.Rahgooy的解决方案后:

enter image description here

编辑:在对URL的值进行硬编码后:

enter image description here

编辑:它现在正在工作!这是工作代码!

$http.put("#{$config.serverAddress}UserChoice/GetTotalScoreForProducts?productIDList=" 
+ _.pluck(products, 'id').join(&productIDList=)
).success (response) ->
    console.log "SUCCESS"
    console.log response
  .error ->
    console.log 'error'

enter image description here

感谢您帮助我T.Rahgooy =)

2 个答案:

答案 0 :(得分:1)

您正在发送querystring: ? productIDList=x,y,它应该querystring: ? productIDList=x &productIDList=y作为数组接收。

$http.put("#{$config.serverAddress}UserChoice/GetTotalScoreForProducts?" 
  + _.map(products, (x)->"productIDList=" + x.id + "&").join(' ')
).success (response) ->
console.log "SUCCESS"
console.log response
.error ->
console.log 'error'

答案 1 :(得分:0)

根据{{​​3}},

_.pluck完全按照您在调试窗口中看到的内容进行操作。它会创建一个以逗号分隔的products数组列表。

如果您希望每个产品都有一个ID,则必须将URI构建为

#{$config.serverAddress}UserChoice/GetTotalScoreForProducts?productIDList=Email%20Gateway&productIDList=Truekey&..."