Estamos intentando publicar datos de JavaScript que corresponden a un Dictionary<string, List> en C#
public class SubmittedObject { public string T; public SomeViewModel ViewModel; } public class SomeViewModel { public int Id; public Dictionary<string, List<ItemViewModel>> Items; public object Other; } public class ItemViewModel { public int id; public string value; } //shown as member variables for simplicityJSON se parece a:
{ "t": "a", "viewModel": { "id": 0, "items": { "firstItem": [ { "id": 1, "value": "1" } ], "secondItem": [ { "id": 2, "value": "2" } ] }, "other": null } }Cuando el objeto JS se envía a
[HttpPost] public ActionResult Save(string t, SubmittedObject viewModel) {...} saveViewModel se interpreta con el primer elemento en el diccionario como key= "FirstItem[0]" y valor nulo. SecondValue se interpreta de la misma manera con key= "SecondItem[0]" y valor nulo.
La solución actual es serializar los datos de envío y enviarlos como una cadena; NewtonSoft lo analiza como se esperaba.