【问题标题】:How to pass an object array from javascript to server如何将对象数组从 javascript 传递到服务器
【发布时间】:2012-09-01 16:39:37
【问题描述】:

我正在从 javascript 向 MVC 控制器进行 ajax 调用,将对象数组传递给控制器​​操作。

JS代码:

function Constructor(p1, p2) {
    this.foo = p1;
    this.bar = p2;
}

var Obejct_Array = new Array();

Obejct_Array[Obejct_Array.length] = new Constructor("A", "B");
Obejct_Array[Obejct_Array.length] = new Constructor("C", "D");

$.post("/_Controller/_Action", { ObjectArray : Obejct_Array });

C# 代码

public Class Example
{
  public string foo { get; set; }
  public string bar { get; set; }
  public string Prop3 { get; set; }
}

 //Action in Controller
 public void _Action(Example[] ObejctArray)
 {
  //Here the size of ObjectArray is 2 but the properties are all null. Whats the problem ?
 }

javascript 数组中的两个条目都传递给控制器​​的操作方法,但属性值显示为 null。谁能告诉我这个问题?

【问题讨论】:

  • 字符串化,然后在服务器端转换回来!
  • @adeneo 你能给个示例代码吗
  • 不确定你是如何在 C# 中做到这一点的,但 Lee Taylor 已经在下面发布了一个链接。在javascript中你会做JSON.stringify(Obejct_Array),我猜你会想要它作为一个字符串,因为它是一个数组,只是将它转换回服务器上。

标签: c# javascript jquery asp.net-mvc-3


【解决方案1】:

您必须使用JSON 来执行此操作。根据您的 Constructor 类的实际代码,这将在 Javascript 方面为您提供类似的内容:

[{"foo":"A", "bar":"B"}, {"foo":"C", "bar":"D"}]

这是具有属性foobar 的2 个对象的数组的JSON 表示。

在服务器端,您必须将 JSON 结构转换回实际的对象结构。当然有库(我不是 C# 人,所以我什么都不知道)

【讨论】:

【解决方案2】:

如果您使用的是 MVC,则可以传递数组数据,以便它直接绑定到您的操作方法中的数组参数。 MVC 将期望数据如下:

// in js
var data = {
    // could also put the name of the parameter before each [0/1] index
    "[0].foo": "A",
    "[0].bar": "B",
    "[1].foo": "C",
    "[1].bar": "D"
};

// a js function to put the data in this format:
function (array, prefix) {
    var prefixToUse = prefix || "",
        data = {},
        i, key;
    for (i = 0; i < array.length; i++) {
        for (key in array[i]) {
            // might want to do some filtering here depending on what properties your objects have
            data[prefixToUse + "[" + i + "]." + key] = array[i][key];
        }
    }

    return data;
}

【讨论】:

    猜你喜欢
    • 2016-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多