Публикация сложных типов с использованием Jquery в Asp.Net MVC - PullRequest
1 голос
/ 14 июля 2009

Я пытаюсь создать службу отдыха, которая получает сложные типы из поста 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

1 Ответ

3 голосов
/ 14 июля 2009

Я думаю, что механизм связывания модели ожидает, что строка запроса будет выглядеть так:

TransactionInfo.FirstName=Hal&TransactionInfo.LastName=Lesesne&...

Если ваш объект похож на:

{ "TransactionInfo.FirstName" : "Hal", "TransactionInfo.LastName", "Lesesne", ... }

Тогда я думаю, что он будет правильно сериализован в строку запроса, которую ожидает MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...