Asp.net Модель веб-API привязывает NULL к POST-запросу

#javascript #c# #.net #vue.js #asp.net-core

#javascript #c# #.net #vue.js #asp.net-ядро

Вопрос:

когда я делаю POST-запрос из своего интерфейса (vue.js ) к asp.net веб-API (с использованием .net CORE), привязка модели показывает значение null при использовании сложного типа в методе контроллера, когда я отправляю запрос объекта json напрямую, но когда я преобразую json в строку json во внешнем интерфейсеи отправьте его с одной переменной, запрос работает.

Мой запрос от vue.js .

 let data = JSON.stringify({"name":"myname","phone":"555555"});

var config = {
  method: 'post',
  url: 'http://localhost:4003/api/Controller/Request',
  headers: { 
    'Content-Type': 'application/json'
  },
  data : data
};
  

Как вы можете видеть выше, мне нужно преобразовать его в строку, а затем отправить строку json в одной переменной. (это работает)

Но если я отправлю запрос как просто прямое необработанное тело json, сложная модель покажет все null значения

 axios.post(http://localhost:4003/api/Controller/Request, {
        "name": "myname",
        "phone": "5555555"
       }, {
        headers: { 
    'Content-Type': 'application/json'
                 }
      });
  

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

 public async Task<IActionResult> Post([FromBody] NameModel input)
  

и DTO NameModel является

 public class NameModel
    {
        public string name { get;set; }
        public string phone { get; set; }
   }
  

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

кроме того, как происходит сопоставление, когда я отправляю только одну переменную data из интерфейса, что-то происходит в startup.cs файле сервисов Iconfigure ?

Комментарии:

1. Возможно, вы захотите использовать {name: "myname",phone: "5555555"}

2. Привет, да, я тоже это пробовал.

3. Вокруг URL-адреса нет кавычек axios.post(http://localhost:4003/api/Controller/Request .

4. @PHPNoob вам нужно упорядочить данные во втором примере.

5. если формат передаваемых данных не соответствует ожидаемой кодировке, он не будет привязываться. Именно так это и было задумано.