2012-04-02 2 views
0

View에서 Controller로 데이터를 보내려고합니다. 하나의 배열과 하나의 객체를 포함하는 상당히 복잡한 객체가 있습니다. 내가 시도해도 컨트롤러에서는 null입니다. IE9s F12으로 데이터를 검사했으며 데이터가 있습니다. 나는 내가 뭘 잘못하고 있는지 이해하지 못한다.View는 mvc에서 내 컨트롤러로 null을 반환합니다. 3

: 뷰

코드 :

var deletedIds = []; 

    $("#spara").click(function() { 
     var changedInsertedData = $("#dagbok_grid").getChangedCells('all'); 
     var theData = { changedInserted: changedInsertedData, deleted: deletedIds }; 
     $.post('@Url.Action("SaveGridData")', JSON.stringify({ data: theData }), null, 'json'); 
    }) 

컨트롤러 : F12 IE9 모드에서

public void SaveGridData(DagbokGridDTO data) 
    { 
     System.Diagnostics.Debug.WriteLine(data.ToString()); 
    } 

모델/DTO들

public class DagbokGridRadDTO 
{ 
    public string Kronika { get; set; } 
    public string Region { get; set; } 
    public string id { get; set; } 

} 

public class DagbokGridDTO 
{ 
    public DagbokGridRadDTO[] changedInserted; 
    public string[] deleted; 
} 

데이터

{"data":{"changedInserted":[{"Kronika":"No","Region":"4","id":"2"}],"deleted":["5"]}} 

나는이 방법으로 작동한다고 생각했지만 컨트롤러에서는 data.changedInserted와 data.deleted가 null입니다. 여러 가지 방법을 시도했지만 아무 도움이되지 않습니다.

답변

1

$.ajax 방법은 당신이 보내는 무엇 인 application/json에 요청 Content-Type 헤더를 설정할 수 있습니다 방법

$.ajax({ 
    url: '@Url.Action("SaveGridData")', 
    type: 'POST', 
    contentType: 'application/json', 
    data: JSON.stringify({ data: theData }), 
    success: function(result) { 

    } 
}); 

알 수 있습니다. $.post 메서드를 사용하면이 머리글을 설정할 수 없으며 모델 바인더는 요청을 이해할 수 없습니다.

+0

달콤한! 고마워요! – kaze

0

컨트롤러에서 FormCollection을 받으려고 할 수 있습니까? 컨트롤러에서 데이터를 form["changedInserted"]으로 읽습니다.

$.post('@Url.Action("SaveGridData")', JSON.stringify({ data: theData }), null, 'json'); 

사용 : 대신

public void SaveGridData(FormCollection form) 
관련 문제