JSON 매개 변수를 전달하는 웹 API 후 조치를 호출 중입니다. 내 사용자 정의 모델은 다음과 같다 :JSON WebAPI 매개 변수의 직렬화
[Serializable]
public class Model
{
public int? prop1 {get; set;}
public bool prop2 {get; set;}
}
웹 API는 다음과 같습니다
public void Post(Model model)
{
if (model != null && model.prop1 ==5)
{
// Do something
}
}
내가 클라이언트에서 전달하는 JSON은 다음과 같습니다
var value = {
prop1: 4,
prop2: true
};
그리고 클라이언트에서 AJAX 호출은 다음과 같습니다
.ajax('/api/MyController', {
type: "POST",
contentType: "application/json",
data: JSON.stringify(value),
success:function(data){
alert(Success);
}
});
howev 모델 속성의 바인딩은 WebAPI 작업에서 작동하지 않습니다. "모델"매개 변수는 인스턴스화되어 돌아옵니다 (null이 아님). 그러나 내부의 모든 속성은 클라이언트에서 전달한 값이 아니라 기본값입니다. Model 클래스에서 [Serializable] 특성을 제거하면 올바르게 작동합니다. 이 개체는 SQL 기반 세션에 저장되므로이 특성을 제거 할 수 없습니다. [Serializable] 특성을 제거하지 않고이 바인딩을 사용할 수있는 방법은 무엇입니까
[Serializable' 속성을 무시하도록 JsonSerializer를 구성하십시오.] (http://stackoverflow.com/a/22486064/997668) – Michael
가능한 복제본 [.NET WebAPI Serialization k \ _BackingField Nastiness] (http : /stackoverflow.com/questions/12334382/net-webapi-serialization-k-backingfield-nastiness) –