asp.net - 将复杂的 JSON 数据 jQuery 传递给 Action

标签 asp.net json asp.net-mvc-2 jquery

我有 2 个类,用于镜像 ajax 调用中的数据。一个(客户)包含名称属性,另一个是产品数组。

Public Class Customer
    Private _Name as String
    Private _Products as Product()

    Public Property Name() As String
        Get
            Return _Name 
        End Get
        Set(ByVal value As String)
            _Name = value
        End Set
    End Property

    Public Property Products() As Product()
        Get
            Return _Products
        End Get
        Set(ByVal value As Product())
            _Products= value
        End Set
    End Property

和 ajax 调用:

$.ajax({
        url: '../../Customer/SaveCustomerData',
        type: "POST",
        dataType: "json",
        data: { "Name": this.Name,
                "Products": [{ "ProductCode": "product 1", "ProductName": "product 1" },
                             { "ProductCode": "product 2", "ProductName": "product 2"}]
        },
        success: function(data) {
            alert("Customer has been saved!");
        }
    });

反射(reflect)了 Customer.Name 的值,但产品的属性保持不变,同时长度仍为 2。

我在这里错过了一些真正重要的东西吗?

最佳答案

现在您没有传递 JSON,而是按原样传递数据(用 $.param() 序列化)...看起来像这样:

Name=something&Products%5B0%5D%5BProductCode%5D=product+1&Products%5B0%5D%5BProductName%5D=product+1&Products%5B1%5D%5BProductCode%5D=product+2&Products%5B1%5D%5BProductName%5D=product+2

要传递 JSON,您需要对其进行字符串化,如下所示:

data: JSON.stringify({ "Name": this.Name,
        "Products": [{ "ProductCode": "product 1", "ProductName": "product 1" },
                     { "ProductCode": "product 2", "ProductName": "product 2"}]
       }),

看起来像这样:

{"Name":"something","Products":[{"ProductCode":"product 1","ProductName":"product 1"},{"ProductCode":"product 2","ProductName":"product 2"}]}

现在这就是您的模型可以将其转回对象的东西。对于不支持 native JSON 的旧版浏览器 (< IE8),include json2.js这将模拟行为。

关于asp.net - 将复杂的 JSON 数据 jQuery 传递给 Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4322359/

相关文章:

c# - 获取连接到 SignalR hub 的监听器、客户端的数量

asp.net-mvc - Html.TextAreaFor 不写入值...? (ASP.NET MVC 2.0)

c# - 在 MembershipProvider/FormsAuthenticationTicket 中存储额外的用户数据

asp.net - DropDownList 的 MVC2 编辑器模板

asp.net MVC 数据库驱动的导航菜单

c# - WCF 服务的 basicHttpBinding 上的 HTTPS

c# - IE 添加 http header PRAGMA : no-cache

javascript - AngularJS 从外部 URL 获取 JSON 数据

php - 谷歌距离矩阵 JSON 最短路径 (PHP)

java - 如何将 JSONobject 转换为对象映射?