2017-03-13 53 views
0

我使用asp.net MVC模型綁定來接受ajax的參數。如何將多個類型的JavaScript數組映射到C#數組

我有一個對象,它的數據結構是這樣的:

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

C#陣列不能具有不同的類型。 (屬性條件是一個有對象和數組的條件)。

所以我定義了一個對象數組。

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)。我認爲模型綁定甚至沒有設置屬性的值。所以這是一個不好的方法。

我想知道是否有其他方式來做到這一點?

UPDATE

QueryVMconditions屬性是一個對象數組,因爲它是包含對象和陣列。

+0

場條件應的類型的條件[]不反對[],另外,這不是有效的JSON。 –

回答

0

條件應該是一個類型條件數組而不是簡單對象。

嘗試

public condition[] conditions { get; set; } 
0

其實你要發送的對象類型列表中,因爲該類型沒有定義,所以你可以做這樣的事情

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

這種更換

public object[] conditions { get; set; } 

將得到的名單,但你的JSON應該是這樣的

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

和你那麼你的類型將是

public List<condition> conditions { get; set; } 
相關問題