Параметр ядра MVC Asp.net всегда нулевой

Я новичок в ядре MVC.

Я создал проект с ядром MVC, который имеет контроллер. Этот контроллер имеет методы действия Get и Post. Если я передаю данные в метод Get, используя строку запроса, он работает нормально, но когда я передаю сложный JSON методу post, он всегда показывает мне ноль.

Вот что я делаю:

Отправить запрос

URL: http://localhost:1001/api/users
Content-Type: application/json
Body: 
{
   "Name":"UserName",
   "Gender":"Gender of the user",
   "PhoneNumber":"PhoneNumber of the user"
}

Вот метод действия Post

[HttpPost]
[Route("api/users")]
public async Task<IActionResult> Post([FromBody]User newUser)
{
   ...
}

Когда почтовый запрос вызывается, тоновый пользователь всегда показывает мне ноль. И если я удалю[FromBody] атрибут, то я получаю объект newUser, но все его поля являются нулевыми.

Пожалуйста, помогите мне и направьте меня в этом вопросе.

РЕДАКТИРОВАНИЕ

Вот мойпользователь учебный класс

public class User{

   public int Id { get; set; }
   public string Name { get; set; }
   public string Gender { get; set; }
   public string PhoneNumber { get; set; }
}

Я сделал так же, как описаноВот для данных JSON, но все еще получает ноль.

 Ravi Patel19 июл. 2016 г., 12:48
UsersController
 Toxicable19 июл. 2016 г., 12:33
У вас есть промежуточное программное обеспечение, которое может перехватить запрос? Вы сделали след проводной акулы или скрипача?
 Rion Williams19 июл. 2016 г., 14:58
Хотя это может быть просто опечатка, не должен ли ваш тип контента бытьapplication/json вместоapplicaton/json?
 Ravi Patel19 июл. 2016 г., 14:56
@Nikosi Пожалуйста, смотрите класс пользователя в редактируемом разделе
 Toxicable19 июл. 2016 г., 12:36
Загрузите Fiddler, просмотрите запросы и осмотрите их, убедитесь, что то, что вы отправляете, соответствует фактическому запросу. Это действительно не сложно использовать
 Ralf Bönning19 июл. 2016 г., 14:23
@RaviPatel - ошибки фиксируются в ModelState?
 Ravi Patel19 июл. 2016 г., 14:04
@Nkosi Я тоже это пробовал, и я уверен, что все свойства JSON совпадают с объектом User. Хотя я получаю все свойства как ноль
 Nikhil.Patel19 июл. 2016 г., 12:46
Как зовут вашего диспетчера ??
 Ravi Patel19 июл. 2016 г., 15:05
@blins Я попробовал отправкуИдентификатор: 0 а также попробовал JSON безЯ бы собственность также. Тем не менее, это не сработало.
 blins19 июл. 2016 г., 15:03
Кажется странным, чтобы отправить"Id": null когда Id является целым (не обнуляемым).
 Ravi Patel19 июл. 2016 г., 12:39
Спасибо, я попробую, но пока что дайте мне знать, если я делаю что-то не так в приведенном выше коде.
 Ravi Patel19 июл. 2016 г., 12:34
Нет, я отправляю запрос через почтальона. Я не знаю, как отследить запрос с помощью Fiddler.
 Nkosi19 июл. 2016 г., 14:05
@RaviPatel, покажиUser определение класса.
 Muhammad Usman19 июл. 2016 г., 13:40
@RaviPatel, как вы отправляете данные с помощью PostMan ???
 Nkosi19 июл. 2016 г., 13:59
Удалить[FromBody] это извлекает простые типы из тела. Это объясняет, почему это работает, когда вы удалили его. Убедитесь, что свойства вашего JSON соответствуютUser объект так, что ModelBinder будет заполнять соответствующие свойства в модели. Покажите свое определениеUser учебный класс

Ответы на вопрос(2)

Post([FromBody] User newUser)

Для будущих читателей из Google эта же проблема может возникнуть, если методPost(User newUser)

Обратите вниманиеотсутствие из[FromBody], Это отступление от предыдущих версий MVC, где эти параметры былив общем-то случайны.

Если вы существующийMVC5 разработчик, который находит эту страницу относительноAspNetCore.MVC, не забудьте проверить, что у вас есть[FromBody] оформлен где уместно.

Решение Вопроса

как обрабатываются нулевые значения. Установите NullValueHandling на Ignore в AddJsonOptions и посмотрите, работает ли это.

public void ConfigureServices(IServiceCollection services)
{
    services
        .AddMvc()
        .AddJsonOptions(jsonOptions=>
        {
            jsonOptions.SerializerSettings.NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore;
        });
}
 m4design07 дек. 2016 г., 17:47
СПАСИБО .. Я не думаю, что я бы понял это в ближайшее время без вашей помощи.
 Ravi Patel28 июл. 2016 г., 09:13
Спасибо, приятель, это сработало просто отлично. Теперь я знаю, почему полученные данные были нулевыми.

Ваш ответ на вопрос