簡體   English   中英

IEnumerable數組始終為null…WebAPI

[英]IEnumerable array is always null…WebAPI

我正在建立一個用逗號分隔的字符串,並將其傳遞給我的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始終為null。 方法如下:

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

如何將逗號分隔的ID列表傳遞給WebAPI方法? 謝謝閱讀

現在,您的控制器操作獲取的是逗號分隔的數字字符串,而不是JSON數組( "[1,2,3,4]" ),這就是模型綁定器不起作用的原因:

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

然后,字符串化數組應正確綁定到IEnumerable<long>

除了將其作為csv值傳遞之外,您還可以使用以下相同的代碼將其作為數組傳遞,

var projectIdList =[];

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

同樣,將api方法中的參數名稱也更改為projectIdList並將其傳遞。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM