두 엔터티 클래스 Donor
및 User
이 있습니다.웹 API 매개 변수 바인딩이 작동하지 않습니다.
public abstract class User {
[Key]
public long Id { get; set; }
...
}
public class Donor : User {
public string AlternateMobileNumber { get; set; }
...
}
주어진 아래 기증 아래와 웹 API 컨트롤러 액션 본문 JSON 데이터와 POST
요구를 수신 한 사용자의 서브 클래스이다
public class DonorsController : ApiController {
//POST: api/Donors/EditDonor
[HttpPost]
public HttpResponseMessage EditDonor([FromBody] Donor donor) {
...
}
}
여기
POST 요청이
POST http://localhost:xxxxx/Donor/api/Donors/EditDonor HTTP/1.1
Content-Length: 477
Cache-Control: no-cache
Content-Type: application/json;charset=UTF-8
Accept: */*
...
{"Id":12,"UserId":"[email protected]","FirstName":"firstname9c","MiddleName":"M","LastName":"lastname9","Gender":"Male","MobileNumber":"7777777777","BloodGroup":"A+ve","OfficeLocality":{"Id":2,"Name":"Malad"},"ResidenceLocality":{"Id":2,"Name":"Malad"},"Organization":"organization9","Designation":"designation9","TimesDonated":1,"DateLastDonated":"Mon Dec 01 00:00:00 GMT+05:30 2014","LastDonatedAt":"Hosp 1","IsSDPDonor":false,"IsIntrestedDonor":false,"Comments":"Some Comment"}
같다 어떻게
기증자 개체가 비어 있습니다 (null이 아니지만 비어 있음, prope에 값이 적용되지 않음). 기증자의 권리). 내가 기증자 객체를 변경 한 다음 속성을 제대로 데이터 객체에 채워됩니다 데이터 전송 개체 (DonorDO) 속성이 같은 있지만 상속없이를 사용하는 경우
. 예를 들어, Donor Data Object는 아래와 같습니다.
//Plain Data Transfer Object without inheritance
public class DonorDO {
public long Id { get; set; }
public string AlternateMobileNumber { get; set; }
...
}
왜 DonorDO가 기증자 엔티티 객체가 바인딩 속성 없음 빈 남아있는 동안의 속성 값이 올바르게 바인딩 얻을 않습니다. 상속 또는 다른 문제와 관련이 있습니까?
문제는 Json 형식 일 수 있습니다. Id 및 AlternateMobileNumber 속성 만 포함하는 간단한 Json으로 시도해보십시오. 그런데 Donor가 기본 유형이 아니므로 FromBody 속성을 제거 할 수 있으므로 본문에서 자동으로 가져옵니다. –
FromBody에 대해 지적 해 주셔서 감사합니다. 전체 JSON 대신 두 개의 필드 만 보내도록 제안했지만 Donor 객체의 속성 값은 모두 null 또는 default입니다. 입력 JSON의 어떤 값도 Donor 객체에 적용되지 않습니다. – Jatin
어디서 문제를 해결할 수 있습니까? – jarz