Застрял в методе HttpPost, пытаясь ввести текст JSON, но объект предположительно "пуст" - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь отправить данные в базу данных, используя почтальон, но я либо получаю 500 внутренняя ошибка сервера, либо мой объект пуст.

[HttpPost()]
   public IActionResult CreateCustomer([FromBody]CustomerForCreationDto customerInfo)
   {

        var customerError = "Please look at your data and make sure it's not empty, incorrect, or has values that are the same!";
        Customer customer = new Customer();

        // Convert CustomerForCreationDto to Customer entity
        customer.Adress = customerInfo.Adress;
        customer.Name = customerInfo.Name;
        customer.MobileNr = customerInfo.MobileNr;
        customer.CustomerId = customerInfo.CustomerId;
        customer.CreatedAtDate = new DateTime(2011,01,01,12,12,12);
        customer.UpdatedAtDate = customer.CreatedAtDate;

        _customerInfoRepository.AddCustomer(customer);


        if (customerInfo == null)
        {
            return BadRequest(customerError);
        }

        if (customerInfo.Name == customerInfo.Adress || customerInfo.Name == customerInfo.MobileNr || customerInfo.MobileNr == customerInfo.Adress)
        {
            return BadRequest(customerError);
        }


        return CreatedAtRoute("", new { customerId = customer.CustomerId }, customer);
   }    

Я не уверен, что не так.Мой JSON, который я передаю через почтальона, это.

{
"customerId": 5,
"name": "Johnathan",
"adress": "12 Maritz Street, Maryland",
"mobileNr": "0723423789",
"createdAtDate": "2001-10-11T11:12:20",
"updatedAtDate": "2017-08-11T14:13:29"

}

CustomerForCreationDTO

public class CustomerForCreationDto
    {

        public int CustomerId { get; set; }

        [MaxLength(50)]
        public string Name { get; set; }

        [MaxLength(100)]
        public string Adress { get; set; }

        [MaxLength(10)]
        public string MobileNr { get; set; }


        public DateTime CreatedAtDate { get; set; }


        public DateTime UpdatedAtDate  { get; set; }

    }

1 Ответ

0 голосов
/ 08 октября 2018

Попробуйте установить JsonProperty для каждого свойства модели на соответствующее имя ключа json, полученного из опубликованного тела.

Загрузите Newtonsoft.json из диспетчера пакетов Nuget и добавьте пространство имен к своей модели, например * 1005.*

public class CustomerForCreationDto
{
    [JsonProperty("customerId")]
    public int CustomerId { get; set; }

    [MaxLength(50)]
    [JsonProperty("name")]
    public string Name { get; set; }

    [MaxLength(100)]
    [JsonProperty("adress")]
    public string Adress { get; set; }

    [MaxLength(10)]
    [JsonProperty("mobileNr")]
    public string MobileNr { get; set; }

    [JsonProperty("createdAtDate")]
    public DateTime CreatedAtDate { get; set; }

    [JsonProperty("updatedAtDate")]
    public DateTime UpdatedAtDate { get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...