我以前从未遇到过这样的问题(如果我每次说的都有一美元),所以我会尽力解释它。
对于这个应用程序,我正在构建,我使用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的两者:
因此,出于某种原因,两个单独的数组对象被放入一个对象中。
问题似乎在于我如何将产品数组传递到服务器,但我似乎无法弄清楚我做错了什么。
非常感谢任何帮助。
感谢您的时间。
编辑:尝试T.Rahgooy的解决方案后:
编辑:在对URL的值进行硬编码后:
编辑:它现在正在工作!这是工作代码!
$http.put("#{$config.serverAddress}UserChoice/GetTotalScoreForProducts?productIDList="
+ _.pluck(products, 'id').join(&productIDList=)
).success (response) ->
console.log "SUCCESS"
console.log response
.error ->
console.log 'error'
感谢您帮助我T.Rahgooy =)
答案 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)
_.pluck
完全按照您在调试窗口中看到的内容进行操作。它会创建一个以逗号分隔的products
数组列表。
如果您希望每个产品都有一个ID,则必须将URI构建为
#{$config.serverAddress}UserChoice/GetTotalScoreForProducts?productIDList=Email%20Gateway&productIDList=Truekey&..."