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