im使用MVC 4我的ActionController收到
以下JSON:JSON反序列化在MVC 4控制器多態性陣列
{
"MainId": 1,
"Actions": [
{
"Attribute1ClassA": 1,
"Attribute2ClassA": 2
},
{
"Attribute1ClassB": 3,
"Attribute2ClassB": 4
},
{
"Attribute1ClassC": 5
}
]
}
和控制器:
[HttpPost]
public ActionResult Commit(ActionsSummaryViewModel summary)
{
//DO stuff
}
和聲明的類:
public ActionsSummaryViewModel
{
public int MainId {get;set;}
public IList<MainClass> {get;set;}
}
public class MainClass
{
}
public class ClassA : MainClass
{
public int Attribute1ClassA {get;set;}
public string Attribute2ClassA {get;set;}
}
public class ClassB : MainClass
{
public int Attribute1ClassB {get;set;}
public string Attribute2ClassB {get;set;}
}
public class ClassC : MainClass
{
public int Attribute1ClassC {get;set;}
}
所以,現在,我怎麼可以管理MainClass反序列化時的動作控制器RECE我的JSON?因爲當我調用行動的列表項是空的。
如果解決方案的一部分是Json.NET,怎麼可以實現用於MVC 4個控制器?
感謝您的幫助。
非常感謝保羅,我不能投你的答案,因爲我的名氣,但我想用模型綁定,因爲我只使用網絡api的CRUD操作。在模型綁定器的實現中,我找不到獲取數組值的方法。例如: values [「MainId」] - >這是好的 values [「Actions」] - >這是空的,而不是它我發現值[「Actions [0] .Attribute1ClassA」] Is there沒有辦法讓類似:值[「行動」]這樣我就可以通過遍歷數組做反序列化? – Luiggi
是的,只要反序列化整個請求主體,然後動態地訪問它以同樣的方式:'result.Actions'。爲了保持簡單,您可以重新操作actions數組的每個實例,然後反序列化爲正確的類型。 – Paul