0

我在 ASP.Net MVC 中有 Kendo UI 网格。我正在尝试将JSON对象传递给控制器​​。虽然我在控制器中得到一个对象,但属性是NULL(名字,姓氏)。我们怎样才能纠正它?

注意:对象不为空;但对象中的属性为空

JSON

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

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

JavaScript

     $("<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)
    {
    }
4

2 回答 2

1

我解决了这个问题。为了他人的利益,我将解决方案放在这里。

当我删除 NewPerson 变量时,问题得到了解决。现在我直接将值分配给 myPerson。下面列出了相应的网络流量。

在此处输入图像描述

 var myPerson = {};
 myPerson.FirstName = "A";
 myPerson.LastName = "B";

 data: function () 
 {

    return myPerson;
 }

更新

对于 getJSON 方法,语法将如下所示,如更好的 JSON 数据结构中所述

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

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

});

于 2013-08-09T04:37:00.137 回答
1

如果我理解正确,您的代码类似于:

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

这里,x不包含foo,它包含函数引用。您需要执行该函数以获取其返回值:

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

在这里,x确实包含foo.

于 2013-08-08T11:36:56.857 回答