ビューからコントローラーにオブジェクトの配列を渡そうとしています。ただし、各オブジェクトには null 値しか含まれていません。私は立ち往生しています。
私のC#クラス:
public class CalendarColor
{
public string BackgroundColor { get; set; }
public string BorderColor { get; set; }
public string ItemType { get; set; }
public string LocationId { get; set; }
public string TextColor { get; set; }
}
コントローラーでの私の方法:
[HttpPost]
public ActionResult SaveColors(IEnumerable<CalendarColor> calendarColors)
{
do the stuff
}
そして、これはJavaScriptです:
//The Array that will hold the CalendarColorObjects
var calendarColors = [];
//Loop through the table with the settings
$('#tblColorSettings > tbody > tr').each(function () {
var calendarColor = {};
calendarColor.ItemType = $(this).find('td:first').text().trim();
calendarColor.LocationId = $(this).attr('data-location');
calendarColor.BackgroundColor = $(this).find('td:nth(1)').find('input').val();
calendarColor.BorderColor = $(this).find('td:nth(2)').find('input').val();
calendarColor.TextColor = $(this).find('td:nth(3)').find('input').val();
//Add to the Array
calendarColors.push({ CalendarColor : calendarColor });
});
var urlSaveSettings = '/settings/savecolors';
var calendarColorsToBeSaved = { calendarColors: calendarColors };
$.ajax({
type: 'POST',
url: urlSaveSettings,
contentType: 'application/json; charset=utf-8',
traditional: true,
data: JSON.stringify(calendarColorsToBeSaved),
success: function (serverMessage) {
if (serverMessage == "OK") {
alert('OK');
}
},
error: function (msg) {
alert(msg);
}
});
コントローラー メソッドで空のオブジェクトの配列を取得します。私は何が間違っているのかを見つけることができないようです。
JSON は次のようになります。
{"calendarColors":[{"CalendarColor":{"ItemType":"Booking","LocationId":"1","BackgroundColor":"#464646","BorderColor":"#FFFFFF","TextColor": "#7c541b"}},{"CalendarColor":{"ItemType":"Booking","LocationId":"3","BackgroundColor":"#464646","BorderColor":"#FFFFFF"
...
","BackgroundColor":"#ff9b99","BorderColor":"#000000","TextColor":"#ff5a56"}}]}