2012-12-14 4 views
0

작동하지 내가 컨트롤러이 있었다 몇 개월 완료 :ASP.NET WebAPI 모델 바인딩 프로젝트에서

public HttpResponseMessage Post(PersonModel model) 
{ 
} 

내가 JSON 개체 내부의 구성원들과 아약스 게시물을 보낼 수 있고, WebAPI 완벽 것 모델 내의 각 속성을 채 웁니다.

그러나 저는 방금 새 프로젝트를 시작했고 동일한 작업을 수행하고 있지만 컨트롤러 내부의 모델은 이제 null입니다. 바인딩이 손상된 것 같습니다. 이 문제를 방지하는 ASP.NET WebAPI에서 변경된 사항이 있습니까?

이 내 아약스 요청입니다 :

$.ajax({ url: "api/auth", type: "post", data: { username: "jon", password: "123" },dataType: "json", contentType: "application/json; charset=utf-8" }); 

답변

4

귀하의 아약스 요청 콘텐츠 몸이 application/x-www-form-urlencoded의 형식은 :
username=jon&password=123을하지만 application/json에 콘텐츠 형식을 설정했습니다. 이 때문에 Json.NET serializer가 요청 본문 내용을 deserialize하지 못했습니다.

당신은 다음 중 하나를 수행 할 수 : application/x-www-form-urlencoded을 할

  1. 변경 내용 유형을 대신 명시 적으로 contentType이 설정의 application/json

  2. application/json를 계속 사용으로하지만, JSON은 데이터를 캐릭터 라인 화 :
    data: JSON.stringify({ username: "jon", password: "123" })

희망이 도움이됩니다.