ASP.NET MVC 4 RC 웹 API에서 이상한 바인딩 문제로 간주되는 것을 얻고 있습니다. 클라이언트로부터의 게시물 요청을 수락하기위한 메소드가 있습니다. 문제는 post 메서드가 호출 될 때 바인딩 매개 변수가 없다는 것입니다. throw 줄과 이름에서 내 중단 점을 얻습니다. 전자 메일은 모두 null입니다. JavaScript에서 GET 요청 유형을 변경하면 매개 변수가 바인딩 된 아래의 Get 함수가 호출됩니다.ASP.NET MVC 4 RC 웹 API 매개 변수 바인딩 문제
왜 Post 메서드에 대한 매개 변수 바인딩이 실패하고 어떻게 해결할 수 있습니까?
send: function(evt) {
evt.preventDefault();
$.ajax({
url: '/api/person',
data: this.model.toJSON(),
type: "POST",
dataType: "json",
success: function(data) {
console.log("Success");
},
error: function(data) {
console.log("Error");
}
});
}
다음 컨트롤러 작업입니다 :
public void Get(string name, string email) {
throw new NotImplementedException();
}
public void Post(string name, string email) {
throw new NotImplementedException();
}
참고 : 나는 ASP.NET MVC 4 RC 웹 API에 대한 기본값 (그래서 디시리얼라이저을 모두 사용하고
- JS 디버거의 Chrome 네트워크 탭에는 양식의 매개 변수가 올바르게 표시됩니다.
get 매개 변수가 void가 아니며 사실 존재하지 않습니다. 나는 명확하지 않을 수도 있지만 기능이 GET에서 작동하고 POST에서는 작동하지 않는다는 것을 설명하기위한 것입니다. – Cody
오케이 - 잘 됐네요. :) 간단히 말해 요청의 본문에서 여러 매개 변수를 바인딩하는 경우 기본적으로 내가 수행 한 것처럼 간단한 모델 유형을 작성하는 것이 가장 쉬운 방법입니다. –
마이크 스톨 (Mike Stall) 기사 링크 주셔서 감사합니다. 무슨 일이 일어나고 있는지 매우 유익했습니다. 나는 웹 API가 MVC와 똑같은 바인딩 전략을 사용한다고 가정했다. 매력처럼 작동하는 매개 변수를받는 사용자 지정 클래스를 만드는 것은 그 솔루션의 팬이 아니지만 이유를 파악할 수 없기 때문에 아마도 완고 할지도 모릅니다. :) 어쨌든 그것은 제가 사용할 해결책입니다. 감사!:) – Cody