私はWebAPIを使い始めており、ほとんどの場合、すべてが順調に進んでいます。ある特定の機能で問題が発生しています。これは、パラメータがIEnumerableタイプのみであるため、他とは異なります。
Post()関数の最初の行にブレークポイントを設定し、関数をヒットしていますが、「values」パラメーターのカウントは常に0です。クライアント側で入力されるパラメーターが0であることを確認しました。実際、整数の配列が含まれています。[FromUri]属性を削除すると、'values'パラメーターはカウント0ではなくNULLになります。
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) { }
});
}
});