Как переслать список, содержащий объекты js, в asp.net core mvc? - PullRequest
0 голосов
/ 10 ноября 2019

Я генерирую объект js, который выглядит следующим образом:

cartStorage = {
     name: 'testcustomer',
     email: 'test@gmail.com',
     items: [
             {
               licenseName: 'Private',
               licensePrice: 2
             },
             {
               licenseName: 'Public',
               licensePrice: 4
             }
            ],
     totalPrice: 6
}

Затем я передаю этот объект в контроллер mvc, используя ajax

$.ajax({
        url: '/TestPayment/ChargeTest',
        type: 'POST',
        contentType: 'application/json',
        data: JSON.stringify(cartStorage),
        success: function(response){
            if (response != null) {  
                alert(response);  
            } else {  
                alert("Something went wrong");  
            }  
        }    
    });

Вот модель представления, связанная с этим методом

namespace Web.ViewModels.Payment
{
    public class Items
    {
        public string licenseName { get; set; }
        public int licensePrice { get; set; }
    }

    public class PayerInfo
    {
        public int totalPrice { get; set; }
        public string name { get; set; }
        public string email { get; set; }
        public Items Items { get; set; }
    } 
}

Вот метод контроллера mvc, который обрабатывает запрос ajax

   [HttpPost]
        public ContentResult ChargeTest([FromBody] PayerInfo model)
        {
            String FullName = model.name;
        }

Но когда сервер выполняет метод контроллера, модель оказывается нулевой.

Однако, если я закомментирую класс Items и создание экземпляра в классе PayerInfo в viewmodel, то модель будет успешно передана, и все данные сохранены, у меня просто проблема ссписок внутри объекта js.

Что я делаю не так?

1 Ответ

0 голосов
/ 10 ноября 2019

items в вашем объекте json это список. Поэтому вам нужно изменить тип Items в вашей модели c # на список.

namespace Web.ViewModels.Payment
{
    public class Items
    {
        public string licenseName { get; set; }
        public int licensePrice { get; set; }
    }

    public class PayerInfo
    {
        public int totalPrice { get; set; }
        public string name { get; set; }
        public string email { get; set; }
        public List<Items> Items { get; set; }
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...