2015-05-13 27 views
0

我建立一个逗号分隔字符串,并将其传递给我的WebAPI方法,像这样:IEnumerable的数组总是空...的WebAPI

var projectids=""; 
        for (var i = 0; i < chk.length; i++) { 
         projectids += chk[i].VMIProjectId + ","; 
        } 
        //projectids = "1,2,3" 
        $.ajax({ 
         type: 'POST', 
         url: "http://localhost:52555/device/6/AddProjectsToDevice", 
         contentType: 'application/json; charset=utf-8', 
         dataType: 'json', 
         data: JSON.stringify(projectids), 
         success: function (msg) { 
         }, 
         error: function (data) { 
          debugger; 
         } 
        }); 

我是成功到达的WebAPI的方法,但我的IEnumerable阵列projectIds始终为空。以下是方法:

[HttpPost] 
    [Route("device/{deviceId}/AddProjectsToDevice")] 
    public IEnumerable<VMI_DeviceLinkedProject> AddProjectsToDevice([FromUri]long deviceId,[FromBody] IEnumerable<long> projectIds){} 

如何将我的逗号分隔的ID列表传递给我的WebAPI方法?感谢您阅读

回答

3

现在您的控制器动作越来越逗号分隔的数字字符串,而不是一个JSON阵列("[1,2,3,4]"),这就是为什么模型绑定不工作:

var projectids = []; 
for (var i = 0; i < chk.length; i++) { 
    projectids.push(chk[i].VMIProjectId); 
} 

然后是字符串数组应该正确绑定到IEnumerable<long>

1

相反传递它作为一个CSV值的可以把它作为使用如下面的相同的代码的阵列,

var projectIdList =[]; 

for (var i = 0; i < chk.length; i++) { 
    projectIdList.push(chk[i].VMIProjectId); 
} 

类似地改变API方法也作为projectIdList参数名称和传递。