次のように、GUID のようなオブジェクトのコレクションを MVC コントローラーに送信しています。
$.ajax({
type: 'GET',
url: 'http://localhost:61975/Song/GetByIds',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: {
songIds: JSON.stringify(songIds)
},
success: function (data) {
},
error: function(error) {
console.error(error);
}
});
リクエスト ヘッダーで送信されるデータは次のようになります。
songIds:["6cb44f55-9fd5-4540-9b11-75ccce816d67"]
私のMVC3コントローラーメソッドは次のようになります。
[HttpGet]
public ActionResult GetByIds(List<Guid> songIds)
{
SongManager songManager = new SongManager(SongDao, PlaylistDao, PlaylistItemDao);
IList<Song> songs = songManager.GetByIds(songIds);
return new JsonDataContractActionResult(songs);
}
この実装では、null 以外の List オブジェクトを受け取りますが、常に空です。私の間違いは何ですか?
編集: GET の代わりにこのように POST すると、正常に動作します。どうして??
$.ajax({
type: 'POST',
url: 'http://localhost:61975/Song/GetByIds',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
songIds: songIds
}),
success: function (data) {
loadedSongs = loadedSongs;
if (callback) {
callback(data);
}
},
error: function(error) {
console.error(error);
}
});