12
我開始使用WebAPI,大部分情況都進展順利。我遇到了一個特定功能的問題。這一個與另一個不同,因爲它只是IEnumerable類型的參數。將IEnumerable參數傳遞給WebAPI
我已經在Post()函數的第一行設置了一個斷點,我正在打這個函數,但「values」參數總是有0的計數。我確認參數進入客戶端事實上,它包含一個整數數組。如果我刪除[FromUri]屬性,則'values'參數爲NULL,而不是0。
如何讓我的整數數組在我的WebAPI函數中通過?
這裏的的WebAPI功能:
[System.Web.Mvc.HttpPost]
public void Post([FromUri] IEnumerable<int> values)
{
if (values == null || !values.Any()) return;
int sortorder = 1;
foreach (int photoId in values)
{
_horseRepository.UpdateSortOrder(photoId, sortorder);
sortorder++;
}
}
這裏的AJAX調用(這是使用jQuery UI可排序的功能):
$(".sortable").sortable({
update: function (event, ui) {
var newArray = $(".sortable").sortable("toArray");
$.ajax({
url: '/api/photo',
type: 'POST',
contentType: 'application/json, charset=utf-8',
async: true,
dataType: 'json',
data: JSON.stringify(newArray),
complete: function (data) { }
});
}
});
數字它應該是一個分號(代碼最初是寫沒有[F romUri],這是我的調試嘗試的一部分)。謝謝! – Scott
@Darin可以從POST請求中提取Uri參數;正是這種使用實例應該來自正文,即public void Post([FromBody] IEnumerable values)。 –