목록이 들어있는 복잡한 JSON 객체를 바인딩하기 위해 ASP.NET MVC3을 가져 오는 데 문제가 있습니다.MVC3 복잡한 JSON 목록 바인딩
여기 내 개체에 대한 구조가 있습니다.
public class PageModel
{
public PageModel() { }
public CustomObject1 CustomObject { get; set; }
public IEnumerable<CustomObject2> Objects { get; set; }
}
public class CustomObject1
{
public CustomObject1() { }
[Required]
public int CustomId1 { get; set; }
public string CustomName { get; set; }
}
public class CustomObject2
{
public CustomObject2() { }
[Required]
public int Custom2Id { get; set; }
public CustomObject3 SubItem { get; set; }
public int SubItemId { get; set; }
}
당신은 CustomObject3
을 가정 할 수는 유사한 구조이다 - 또 다른 만들어 클래스를 복제 할 필요가 없습니다, 그래서 당신은 당신의 상상력 :
을 사용할 수 있습니다 파악 여기에 POST 호출을 자바 스크립트/jQuery를의 (가정이 모든 것이 정확한 데이터 제공에 이르기까지의 JS) : 마지막으로
//$obj1 has all data for the first object
var firstObj = { };
firstObj.CustomId1 = $obj1.Id;
firstObj.CustomName = $obj1.Name;
var i = 0;
//$objects is an array with all the data
$.each($objects, function() {
objsArray[i] = {
Custom2Id: $(this).Id,
SubItemId: $(this).itemId
};
++i;
});
$.ajax({
type: 'POST',
url: '/Action/Method',
data: { CustomObject: firstObj, Objects: objsArray },
//Success/error handlers here
});
그리고 (나는 알고있다, 꽤 코드) 여기에 방법에 대한 개요 내가 가진 :
public class ActionController : Controller {
public JsonResult Method(PageModel model) {
//Gets here - model.CustomObject is filled correctly, and model.Objects has a correct count of whatever data I passed to the method - but all of the properties are empty!
}
}
내가 말했듯이 첫 번째 객체는 채워지고 디버깅 및 단계를 거치면 모든 데이터가 저장됩니다. JSON 객체의 Objects
배열에있는 두 객체를 전달하면 컨트롤러에 Count
의 2가 표시되지만 Custom2Id
과 SubItemId
은 비어 있습니다. 뭐라 구요?
내 $.ajax
호출에서 contentType
이 'application/json'
으로 지정되면 MVC는 전달되는 데이터에 대해 불만을 토로합니다. 또한 MVC 메서드에서 model
매개 변수를 두 개의 개별 매개 변수로 분할하려고했지만 도움이되지 않습니다.
어떤 도움을 주셔서 감사합니다 -이 하나가 저를 곤혹스럽게했습니다!
덕분에 많은 도움이되었습니다 :)! – Rookian
완전한 기능 코드를 원하는 시간 이후,이게 내 문제를 해결했습니다! 감사!! –