我创建了一个客户端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对象并发布它们的任何想法?
谢谢:)
答案 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
}