JSON POST 데이터를 Web API 메서드에 객체로 전달
ASP.NET MVC에서 고객 객체를 JSON 형식으로 전달 POST 요청으로 인해 POST 메서드의 고객 매개변수에 null 값이 나타날 수 있습니다. 이 문제는 브라우저에서 사용하는 기본 콘텐츠 유형("application/x-www-form-urlencoded") 때문에 발생합니다.
해결 방법
문제가 있는 경우 POST 요청에서 Content-Type 헤더를 "application/json"으로 설정해야 합니다. 이는 아래와 같이 요청 헤더에 Content-Type: "application/json"을 사용하여 달성할 수 있습니다.
$(function () { var customer = {contact_name :"Scott",company_name:"HP"}; $.ajax({ type: "POST", data :JSON.stringify(customer), url: "api/Customer", contentType: "application/json" }); });
Content-Type을 "application/json"으로 지정하면 모델이 바인더는 JSON 데이터를 정확하게 인식하고 해당 클래스 객체에 바인딩합니다.
Passing Complex 개체
웹 API 메서드 매개 변수가 다음과 같은 복잡한 개체인 경우:
public class CustomerViewModel { public int Id {get; set;} public string Name {get; set;} public List<TagViewModel> Tags {get; set;} }
클라이언트 측에서 이 개체를 보내려면 다음 코드를 사용할 수 있습니다.
//Build an object which matches the structure of our view model class var model = { Name: "Shyju", Id: 123, Tags: [{ Id: 12, Code: "C" }, { Id: 33, Code: "Swift" }] }; $.ajax({ type: "POST", data: JSON.stringify(model), url: "../product/save", contentType: "application/json" }).done(function(res) { console.log('res', res); // Do something with the result :) });
[FromBody] 확인 속성
요청 본문에서 모델 바인딩을 활성화하려면 웹 API 메서드 매개 변수를 [FromBody] 속성으로 장식해야 합니다. 이 속성을 생략하면 일반 속성은 올바르게 바인딩되지만 복합 속성은 비어 있는 상태로 유지됩니다.
[HttpPost] public CustomerViewModel Save([FromBody] CustomerViewModel m) { return m; }
위 내용은 ASP.NET MVC에서 JSON POST 데이터를 웹 API 메서드에 개체로 전달하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!