2013-08-08 2 views
0

ASP.Net MVC에 검도 UI 그리드가 있습니다. 컨트롤러에 JSON 객체를 전달하려고합니다. 컨트롤러에서 객체를 얻고 있지만 속성은 NULL (성, 성)으로 표시됩니다. 어떻게 해결할 수 있습니까?JSON 개체 속성이 NULL로오고 있습니다.

참고 : 개체가 null이 아닙니다. 하지만 속성

JSON

var NewPerson = new Object(); 
    NewPerson.FirstName = "A"; 
    NewPerson.LastName = "B"; 

    var json1 = { myPerson: NewPerson }; 
    return json1; 

자바 스크립트

 $("<div/>").appendTo(e.detailCell).kendoGrid({ 
      dataSource: { 
       type: "aspnetmvc-ajax", 
       transport: { 

        dataType: "json", 
        //,type: "POST" 
        read: { 
         url: "Home/GetItemsData", 
         data: function() 
         { 
          var NewPerson = new Object(); 
          NewPerson.FirstName = "A"; 
          NewPerson.LastName = "B"; 

          var json1 = { myPerson: NewPerson }; 
          return json1; 
         } 
        } 



       }, 
       schema: { 
        model: { 
         fields: { 
          Program: { 
           ItemID: "number", 
          }, 
          ItemDescription: { type: "string" } 
         } 
        }, 
        total: "Total", 
        data: "Items" 
       }, 
       serverPaging: true, 
       serverSorting: true, 
       serverFiltering: true, 
       pageSize: 5 
      }, 
      scrollable: false, 
      sortable: true, 
      pageable: true, 
      columns: [ 
         { field: "ItemID", title: "Item Id", width: "70px" }, 
         { field: "ItemDescription", title: "Item Description", width: "110px" } 
      ] 
     }); 

컨트롤러

public JsonResult GetItemsData(Person myPerson, [DataSourceRequest] DataSourceRequest request) 
    { 
    } 
+1

에서 언급 한 바와 같이

enter image description here

var myPerson = {}; myPerson.FirstName = "A"; myPerson.LastName = "B"; data: function() { return myPerson; } 

UPDATE는해서 getJSON 방법

, 구문은 다음과 같이 될 것이다 파이어 버그에? –

+0

@NikolayFominyh 네트워크 트래픽이 해결되었습니다. 응답은 – Lijo

답변

1

문제가 해결되었습니다. 다른 사람들을 위해서 나는 해결책을 제시 할 것이다.

NewPerson 변수를 제거하면 문제가 해결되었습니다. 이제 myPerson에 직접 값을 할당하고 있습니다. 그리고 해당 네트워크 트래픽이 아래에 나열되어 있습니다. Better JSON data structure

var searchCriteria = {}; 
searchCriteria.Accrual = "A"; 
searchCriteria.Brand = "B"; 

$.getJSON(url, searchCriteria 
, function (data) { 
    if (data.length) { 
     alert('Success'); 
    } 

}); 

서버에 쿼리의 모습을 어떻게
+0

입니다. 참고 문헌 [haacked.com - 목록에 바인딩되는 모델] (http://haacked.com/archive/2008/10/23/model- binding-to-a-list.aspx /) 및 http://stackoverflow.com/questions/16547491/ajax-post-to-asp-net-mvc-controller-object-properties-are-null – Lijo

1

내가 제대로 이해하면 객체에 null이, 당신의 코드는시 이와 유사한 구성 :

여기
var x = function(){ 
    return "foo"; 
}; 

, xfoo 포함되어 있지 않습니다, 그것은 함수 참조를 포함합니다.

다음
var x = (function(){ 
    return "foo"; 
})(); 

, xfoo 포함되어 있습니까 : 당신은 반환 값을 얻기 위해에게 기능을 실행 해야합니다.