使用jQuery将Javascript对象发布到MVC ActionResult

时间:2010-07-14 17:39:12

标签: javascript asp.net-mvc http-post

我创建了一个客户端javascript对象数组,我想将其发回服务器。但是当我执行以下操作时,数组将在FormCollection中作为“undefined”Serverside返回。

我正在使用jQuery,这是我的javascript代码:

function MyObject(){
    this.Param1;
    this.Param2;
}

var myArray = new Array();

var newObject1 = new MyObject();
newObject1.Param1 = "abc";
newObject1.Param2 = "efg";
myArray.push(newObject1);

var myArray = new Array();
var newObject2 = new MyObject();
newObject2.Param1 = "hij";
newObject2.Param2 = "klm";
myArray.push(newObject2);

$.post("Save", myArray, function (result) { PostDataCallBack(result); });

有没有人有这样的例子或关于如何序列化javascript对象并发布它们的任何想法?

谢谢:)

1 个答案:

答案 0 :(得分:1)

数组中的项目在发布到actionMethod时必须具有相同的名称。只要它们具有相同的名称,modelBinder就可以将它们拾取并将它们填充到actionMethod的数组参数中。现在,看起来你没有为你的阵列定义一个名字。这可能意味着它使用默认名称,但您的actionMethod的参数名称必须匹配。

试试这个:

$.post(
    "Save", 
    { myArray: myArray }, 
    function (result) { PostDataCallBack(result); } 
);

尝试使用与您的javascript对象匹配的c#类,以便modelBinder可以为您做一些不错的事情:

public class MyObject
{
    public string Param1 { get; set; }
    public string Param2 { get; set; }
}

然后,您的操作方法应如下所示:

public ActionResult Save(MyObject[] MyArray) {
    //DO STUFF HERE
}