将项添加到JSON对象

时间:2014-10-14 15:42:40

标签: javascript c# jquery asp.net json

我有一种情况,我无法弄清楚该怎么做。我试图将项添加到从控制器发送的JSON对象。

这是我的模特:

 public class Model1
 {
     public Model2 item {get;set;}
     public List<Model2> items {get;set;}
      //

并在页面

 var jsonData = @Html.Raw(JSON.Encode(Model))

这给了我基本但空洞的模型。现在在页面中我填写了各个字段,并希望将这些项目添加到模型中以供发布。所以:

 jsonData.item.field1 = $("#field1").val();

然后我想添加到项目列表中,但我找不到任何有用的东西:

 jsonData.items.add(jsonData.item)

不起作用会引发错误。

 jsonData.items.push(jsonData.item);  

有效,但我添加的每个项目都相同。这意味着当我添加第二个项目时,列表中有两个但它们具有相同的值。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

众所周知,Javascript可以用作OO语言,可以在javascript中动态创建类和对象。 根据我的理解,您使用下面的代码来获取JavaScript中的类属性

 var jsonData = @Html.Raw(JSON.Encode(Model))

当此JSON返回到客户端时,它被视为单个对象。

所以,你可以声明一个函数,作为类:

   function Model2(jsonData ) {
        this.name       = jsonData.name;
        this.discovered = jsonData.discovered;
    };

    var objModel2_1= new Model2(jsonData);

现在, 你可以声明一个数组来添加objModel2。

var arrModel2=[];
// add new objects

attModel.push(objModel2_1);   

最后,  完成后,您可以使用现有的jsonData对象来填充 即。

   jsonData.item=objModel2_1;
   jsonData.items=attModel;

希望,这会对你有帮助。