Ошибка преобразования значения в тип при публикации данных в Asp.net Core API через Postman - PullRequest
1 голос
/ 07 марта 2019

Я занимаюсь разработкой API в Asp.net Core. У меня есть контактные и рабочие названия моделей.

Contact.cs

public class Contact
{
    [Key]
    public int ContactId { get; set; }

    //public string UserId { get; set; }

    [Required]
    [StringLength(20)]
    public string FirstName { get; set; }

    [StringLength(20)]
    public string MiddleName { get; set; }

    [Required]
    [StringLength(20)]
    public string LastName { get; set; }

    [StringLength(60)]
    public string FullName { get; set; }

    [Required]
    public Gender Gender { get; set; }

    [Required]
    public DateTime DateOfBirth { get; set; }

    public MaritalStatus MaritalStatus { get; set; }

    [Required]
    public JobTitle JobTitle { get; set; }

    [Required]
    [EmailAddress]
    [StringLength(50)]
    public string Email { get; set; }

    public int Phone { get; set; }

    [Required]
    public int Mobile { get; set; }

    public string Address { get; set; }
    public string Photo { get; set; }
    public bool IsDeleted { get; set; }
    public DateTime CreatedOn { get; set; }
    public DateTime UpdatedOn { get; set; }
}

public enum Gender
{
    Male = 0,
    Female = 1
}

public enum MaritalStatus
{
    Unmarried = 0,
    Married = 1,
    Divorced = 2,
    Widowed = 3
}

Jobtitle.cs

public class JobTitle
{
    [Key]
    public int Id { get; set; }

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

    [Required]
    [StringLength(50)]
    public string NameAr { get; set; }

    public bool IsDeleted { get; set; }
    public DateTime? CreatedOn { get; set; }
    public DateTime? UpdatedOn { get; set; }
    public virtual ICollection<Contact> Contact { get; set; }
}

Я использую Postman для публикации своих данных JSON, чтобы вставить новое значение в контакт, но это дает мне ошибку:

Значение JSON

{
"firstName": "XYZ",
"middleName": "",
"lastName": "ABS",
"fullName": "XYZ ABS",
"gender": 0,
"dateOfBirth": "1987-03-05T07:49:33",
"maritalStatus": 1,
"jobTitle": "1",
"email": "demo@demo.com",
"phone": 12345678,
"mobile": 12345678,
"address": "84445 abc Hill",
"photo": "",
"isDeleted": false,
"createdOn": "2018-03-07T03:41:44",
"updatedOn": "2018-03-07T03:41:44"
}

Выдает ошибку при преобразовании значения в тип объекта Jobtitle.

"errors": {
"jobTitle": [
  "Error converting value \"1\" to type 'TransConnectApi.Models.JobTitle'. Path 'jobTitle', line 9, position 17."
]
}

Я понимаю, что проблема в том, что API нужен объект названия задания в качестве ссылки, но я не знаю, как это сделать, поскольку он не достигает моей точки останова после публикации в Visual Studio. Так как же я могу взять значение jobtitle и преобразовать его?

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Вы можете отправить объект только с ключом Id, например:

{
  "firstName": "XYZ",
  "middleName": "",
  "lastName": "ABS",
  "fullName": "XYZ ABS",
  "gender": 0,
  "dateOfBirth": "1987-03-05T07:49:33",
  "maritalStatus": 1,
  "jobTitle": {  // here just pass object with Id key
    "Id": "1"
  },
  "email": "demo@demo.com",
  "phone": 12345678,
  "mobile": 12345678,
  "address": "84445 abc Hill",
  "photo": "",
  "isDeleted": false,
  "createdOn": "2018-03-07T03:41:44",
  "updatedOn": "2018-03-07T03:41:44"
}
0 голосов
/ 07 марта 2019

Вы можете сделать это так:

-edit: Вы сказали в комментарии, а я обновил ответ.Если вы не хотите отправлять JobTitle с JSON, просто удалите эту строку.Он отобразит NULL как ваш объект JobTitle.Так что вы можете справиться с этим в коде бэкэнда.

{
"firstName": "XYZ",
"middleName": "",
"lastName": "ABS",
"fullName": "XYZ ABS",
"gender": 0,
"dateOfBirth": "1987-03-05T07:49:33",
"maritalStatus": 1,
"email": "demo@demo.com",
"phone": 12345678,
"mobile": 12345678,
"address": "84445 abc Hill",
"photo": "",
"isDeleted": false,
"createdOn": "2018-03-07T03:41:44",
"updatedOn": "2018-03-07T03:41:44"
}
...