如何将多类型javascript数组映射到C#array

时间:2017-03-13 10:55:28

标签: c# asp.net-mvc

我使用asp.net MVC模型绑定来接受ajax的参数。

我有一个对象,它的数据结构如下:

{
      "conditions": [
        {
          "field": "",
          "opreator": "",
          "value": ""
        },[{
          "field": "",
          "opreator": "",
          "value": ""
        },
        {
          "field": "",
          "opreator": "",
          "value": ""
        }]
      ],
      "name": "query",
}

C#数组不能有不同的类型。 (属性条件是具有对象和数组的arrray)。

所以我定义了一个对象数组。

public class QueryVM
{
    public class condition
    {
        public string field { get; set; }
        public string opreator { get; set; }
        public string value { get; set; }
    }

    public object[] conditions { get; set; }
    public string name { get; set; }
}

但我收到的属性条件只是一个对象数组。我无法访问它的实际属性,我甚至不知道它的实际类型是(QueryVM.conditionarray)。我认为模型绑定甚至没有设置属性的值。所以这是一个糟糕的方式。

我想知道是否有其他方法可以做到这一点?

更新

conditions的{​​{1}}属性是一个对象数组,因为它包含对象和数组。

2 个答案:

答案 0 :(得分:0)

条件应该是类型条件的数组而不是简单对象。

尝试替换

public object[] conditions { get; set; }

public condition[] conditions { get; set; }

答案 1 :(得分:0)

实际上你正在发送类型对象的列表,因为没有定义类型,所以你可以做这样的事情

public List<object> conditions { get; set; }

这将获得列表,但你的json应该是这样的

conditions:[{
          "field": "",
          "opreator": "",
          "value": ""
        },
        {
          "field": "",
          "opreator": "",
          "value": ""
        }]

然后您的类型将是

public List<condition> conditions { get; set; }