Я пытаюсь создать службу отдыха, которая получает сложные типы из поста Jquery $ .ajax, но я не могу убедить mvc гидрировать мои сложные объекты в контроллере.
Вот мой код:
Контроллер:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ChargeUser(TransactionInfo transactionInfo, CardInfo cardInfo) {
/// both transactionInfo and cardInfo are un-populated.
}
DTOS:
[Serializable] public class CardInfo : ICardInfo {
public string CCNumber { get; set; }
public int ExpirationMonth { get; set; }
public int ExpirationYear { get; set; }
public string CardVerificationValue { get; set; }
}
[Serializable]
public class TransactionInfo : ITransactionInfo
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string Region { get; set; }
public string Country { get; set; }
public string PostalCode { get; set; }
public string Currency { get; set; }
public decimal Amount { get; set; }
}
Пример JSON, который я отправляю, выглядит следующим образом:
"{"transactionInfo":{"FirstName":"Hal","LastName":"Lesesne","Address1":"504 Anytown Drive","Address2":"Sample Address 2","City":"Boone","Region":"NC","Country":"US","PostalCode":"28607","Currency":"USD","Amount":"1.5"},"cardInfo":{"CCNumber":"4222 2222 2222 2222","ExpirationMonth":"1","ExpirationYear":"2009","CardVerificationValue":"333"}}"
Использование вызова jquery, например:
function jQueryPost(data, action, onSuccess, onFailure) {
$.ajax({
url: action,
type: 'POST',
data: data,
dataType: 'json',
contentType: "application/json; charset=utf-8",
error: onFailure,
success: onSuccess
});
}
Я достиг точки останова при отладке, но не заполняются ни TransactionInfo, ни CardInfo, а имеют только значения по умолчанию для строк (ноль) и чисел (0).
Я предполагаю, что я делаю что-то не так с моим форматированием json, но просто не могу понять это. Любая идея будет принята с благодарностью.
С наилучшими пожеланиями и спасибо за ваше время.
Hal