2017-01-03 1 views
2

에서 웹 API 컨트롤러에 JSON 개체 매개 변수를 보내기 구글 API입니다 - 자바 스크립트 코드 내가 null 값을 얻을이 경우 컨트롤러.netCore

// GET api/values/5 
    [HttpPost("{PlaceDetails}")] 
    public string Get(PlaceDetails value) 
    { 
     return "value"; 
    } 

에서받을 수있는 방법

var output = new Object(); 
output.PlaceID = place.place_id; 
output.Longitude = place.geometry.location.lng(); 
output.Latitude = place.geometry.location.lat(); 

$.ajax({ 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
    }, 
    url: 'api/StorePlaces/Get', 
    type: 'POST', 
    data: { "value":output }, 
    success: function (result) { 
     // Do something with the result 
    } 
}); 

문자열을 보낼 수 없으므로 Object를 보낼 수 있으면 더 좋습니다.

객체가 여러 가지 코드 문제가 있습니다

public class PlaceDetails 
{ 
    public string PlaceID { get; set; } 
    public string Longitude { get; set; } 
    public string Latitude { get; set; } 
} 

enter image description here

+0

변경 요청 유형을 모델을 역 직렬화와 'PlaceDetails' – Dalton

+0

에 POST 및 변경 매개 변수 유형을 허용하도록 방법을 변경하도록 지시 할 수 없습니다 @Dalton null 값을 얻습니다. 무엇을할까요? –

+0

데이터 수정 :'data : output'을 입력하고'[FromBody]'를 제거하십시오. – Dalton

답변

7

는, 어쩌면 처음 몇 초보자 튜토리얼을 참조 수신으로 사용할 수 있습니까?

먼저, 전송중인 개체를 살펴 봐야합니다. 매우 분명합니다. (왜,

$.ajax({ 
    headers: { 
     'Accept': 'application/json', 
     'Content-Type': 'application/json' 
    }, 
    url: 'api/StorePlaces/Get', 
    type: 'POST', 
    // do not wrap it in object with value property here!!!! 
    data: JSON.stringify(output), 
    success: function (result) { 
     // Do something with the result 
    } 
}); 

둘째로 당신의 컨트롤러 동작을 : 예상 답변

{ 
    "PlaceID" : "", 
    "Longitude " : "", 
    "Latitude " : "" 
} 

을 어디에

당신은 그래서 당신은 자바 스크립트에서 이것을 사용할 필요가

{ 
    "value" : { 
     "PlaceID" : "", 
     "Longitude " : "", 
     "Latitude " : "" 
    } 
} 

을 보내는 도대체 게시 요청이있을 때 Get라고하는 것입니까?) ... [HttPost("{PlaceDetails}")] 속성이 잘못되었습니다.

이렇게하면 경로에 PlaceDetails 매개 변수가 있어야합니다. 너는 그런 사람이 아니야! 그냥 제거하십시오. 또한, [FromBody] 속성은 'POST'에 아약스의 HTTP 요청 본문에서

[HttpPost] 
public string Get([FromBody]PlaceDetails value) 
{ 
    return "value"; 
} 
+0

솔루션 주셔서 감사. –

+16

예. 좋은 대답이지만, 어쨌든 초보자가되는 것에 대한 과장은 도움이됩니까? 희미하게 가려진 모욕을 다른 사람들이 보도록 도울 수 있습니까? 정말 기분이 좋아 지나요? –

관련 문제