Это была моя первая попытка связывания модели JSON MVC, и все идет не по плану ... огромный вздох!При каждой попытке, когда я нарушаю действие контроллера, строго типизированная модель / класс либо пуста, либо равна нулю.
Что я делаю:
На стороне клиента я создаю массив для хранения платежей
var PAYMENTS = new Array();
Значения платежа вводятся пользователем и добавляются в массив платежей.Некоторые поля будут заполнены на стороне сервера только после публикации данных, поэтому я присваиваю временные значения. (Ссылка, ID пользователя)
PAYMENTS.push({ reference: "0",
paymentDate: date,
paymentMethodID: paymentMethod,
paymentAmount: amount,
bankNameID: bankID,
bankBranchCode: branch,
drawerName: drawer,
chequeNo: chequeNo,
userID: "00000000-0000-0000-0000-000000000000",
statementNo: statementNo,
additionalReference: additionalRef
});
После добавления 2-х платежей это результат firebug для PAYMENTS
0 Object { reference="0", paymentDate="31-01-2012", paymentMethodID="7", more...}
1 Object { reference="0", paymentDate="31-01-2012", paymentMethodID="0", more...}
Пользователь выбирает для обработки платежей, который вызывает processPayment ()
Практики - это второй параметр, который необходимо передать, но он просто пытается заставить платеж работать первым.
function processPayment() {
var paymentsJSON = $.toJSON(PAYMENTS);
// var practicesJSON = $.toJSON(selectedPractices);
$.ajax({
url: BASE_APP_URL + "Payment/processPayment",
type: 'POST',
data: "{ param : '" + paymentsJSON + "'}" ,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (data) {
alert(data);
}
});
}
Класс ViewModel.Я упростил типы viewModel, пытаясь получить что-то в контроллер.
public class paymentsViewModelJSONPayment
{
public string referece { get; set; }
public string paymentDate { get; set; }
public string paymentMethodID { get; set; }
public decimal paymentAmount { get; set; }
public string bankNameID { get; set; }
public string bankBranchCode { get; set; }
public string drawerName { get; set; }
public string chequeNo { get; set; }
public string userID { get; set; }
public string statementNo { get; set; }
public string additionalReference { get; set; }
}
наконец, действие контроллера
[HttpPost]
public ActionResult processPayment(List<paymentsViewModelJSONPayment> param)
{
return Json(param);
При отладке:
Отправка значений изFirebug:
JSON
param "[{"reference":"0","paymentDate":"31-01-2012","paymentMethodID":"7","paymentAmount":500,"bankNameID":"8","bankBranchCode":"","drawerName":"","chequeNo":"","userID":"00000000-0000-0000-0000-000000000000","statementNo":"","additionalReference":""},{"reference":"0","paymentDate":"31-01-2012","paymentMethodID":"0","paymentAmount":500,"bankNameID":"10","bankBranchCode":"0026","drawerName":"drawer","chequeNo":"00231021","userID":"00000000-0000-0000-0000-000000000000","statementNo":"","additionalReference":""}]"
Точка останова в контроллере.Действие вызывается, но без привязки.
Запрещено публиковать изображения, но при разрыве контроллера Список пуст.
Из списка наблюдения:
- param Count = 0 System.Collections.Generic.List
- Raw View Capacity 0 int Count 0 int
- Статические члены
- Непубличные члены
У меня почти нет идей, я пробовал разные конфигурации и немного потерял счет из-за того, что я пробовал.
Буду очень признателен за любую помощь.
Спасибо за стек.