У меня очень простой класс:
public class FilterItem
{
public Dictionary ItemsDictionary { get; set; }
public FilterItem()
{
ItemsDictionary = new Dictionary();
}
}
Я хочу заполнить данные в словаре на клиенте, а затем передать их в действие моего контроллера как объект JSON . Однако независимо от того, что я пробую на клиенте, DefaultModelBinder, похоже, не может десериализовать его.
Вот пример кода javascript для вызова моего действия:
var simpleDictionary = {"ItemsDictionary": {"1": "5", "2": "7"}};
$.ajax({ cache: false, type: "POST", data: JSON.stringify(simpleDictionary),
contentType: "application/json; charset=utf-8",
url: "/Catalog7Spikes/GetFilteredProductsJson", success: function (data) {...});
А вот упрощенная версия моего метода действия:
[HttpPost]
public ActionResult GetFilteredProductsJson(FilterItem filterItem)
{
ProductsModel productsModel = new ProductsModel();
return View("SevenSpikes.Nop.UI.Views.Products", productsModel);
}
Обратите внимание, что работает обратное. При передаче как JsonResult объект FilterItem успешно сериализуется и передается клиенту как объект JSON. Однако попытка пойти другим путем не работает.
Я прочитал билет на Connect и подумал, что обходной путь будет работать, но это не работает.
Возможно ли вообще десериализовать словарь .NET, использующий DefaultModelBinder в ASP.NET MVC 3?