1

클라이언트 웹 응용 프로그램의 개체를 클라이언트의 CRUD API에 게시하려고합니다. 내가 POST 요청하기 위해 다음 코드를 사용하고 있습니다 :HttpClient로 게시 할 때 내 게시물 데이터가 모두 null 인 이유는 무엇입니까?

var respP = await _client.PostAsync("api/Persons", new StringContent(JsonConvert.SerializeObject(person), Encoding.UTF8, "application/json")); 

그리고 API 동작 방법은 간단 :

[HttpPost] 
public async Task Post(Person person) 
{ 
    _db.Add(person); 
    await _db.SaveChangesAsync(); 
} 

나는 _db.Add(person);에 브레이크 포인트를하고이 명중 할 때, 나는 참조 person에 null 이외의 Person 인스턴스를 가지고 있지만, 모든 필드는 기본값입니다 않는, 즉 nullables 다음과 같이 내 HttpClient 설정

등 null 인 :

_client.BaseAddress = _config["Api:Url"]; 
_client.DefaultRequestHeaders.Clear(); 
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 

는 내가 원시 JSON을 볼 수 있는지 확인하기 위해 person 매개 변수 유형 string을 시도했지만 역시하여 person PARAM 자체가 null입니다.

내가 뭘 잘못하고 있니?

ADDED는 :

public class Person 
{ 
    [Key] 
    public int PersonId { get; set; } 

    [Required(AllowEmptyStrings = false)] 
    [StringLength(128)] 
    public string LastName { get; set; } 

    [Required(AllowEmptyStrings = false)] 
    [StringLength(128)] 
    public string FirstName { get; set; } 

    [Column(TypeName = "date")] 
    public DateTime BirthDate { get; set; } 

    [Required(AllowEmptyStrings = false)] 
    [StringLength(13)] 
    public string IdNumber { get; set; } 
} 

및 전달 된 실제 JSON입니다 : :이 Person 클래스는 다음과 같습니다

{ 
    "PersonId": 0, 
    "LastName": "df", 
    "FirstName": "dfzg", 
    "BirthDate": "2017-12-01T00:00:00", 
    "IdNumber": "0000000000000" 
} 
+0

[HttpPost] public async Task<IActionResult> Post([FromBody]Person person) { if(ModelState.IsValid) { _db.Add(person); await _db.SaveChangesAsync(); return Ok(); } return BadRequest(); } 

나는이 주제에 떨어져 있기 때문에 일부 뇌 농양이 질문을 downvoted했다 참조하십시오. 내가 묻고있는 프로그래밍에 대해 더 많은 것이있을 수 있습니까? – ProfK

답변

0

명시 적으로 어디에 바인드로 들어오는 데이터를 찾기 위해 프레임 워크를 알려줄 필요 모델에. 매개 변수에 [FromBody] 속성을 사용하여 요청 본문의 데이터를 바인딩하십시오.

참고 : 사용자 입력을 허용하는 작업은 ModelState.IsValid 속성을 확인해야합니다. 참조 Model Binding