#c# #rest #asp.net-core #postman #asp.net-core-2.2
#c# #rest #asp.net-core #postman #asp.net-core-2.2
Вопрос:
Я разрабатываю API в Asp.net Ядро. У меня есть модели Contact и Jobtitle.
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 для вставки нового значения в contact, но это выдает мне ошибку:
Значение 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 нуждается в объекте jobtitle в качестве ссылки, но я не знаю, как это сделать, поскольку он не попадает в мою точку останова post в Visual Studio. Итак, как я могу взять значение jobtitle и преобразовать его?
Комментарии:
1. JobTitle принимает значение
object
типа JobTitle, и вы передаетеinteger
Ответ №1:
Вы можете отправить объект, содержащий только 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"
}
Ответ №2:
Вы можете сделать это следующим образом:
-редактировать: Вы сказали в комментарии, и я обновил ответ. Если вы не хотите отправлять 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"
}
Комментарии:
1. На самом деле Jobtitle уже есть в db, я не хочу добавлять новый. Я просто указываю идентификатор Jobtitle при создании нового контакта.
2. Тогда не отправляйте это. таким образом, это будет null 🙂
3. @ShabbirIsmail Проверьте отправленный ответ