У меня есть следующий фрагмент JavaScript:
$.ajax({
url: self.LoadCirculationListUrl,
cache: false,
async: false,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: [ { "ColumnName":"France","Comparitor":"=","Value":"1"},{"ColumnName":"Germany","Comparitor":">","Value":"3"}]
});
Вот управляющий элемент, доступ к которому осуществляется из вышеуказанного вызова ajax:
public ActionResult LoadCirculationData(IList<CirculationListFilter> filters)
{
}
Вот класс CirculationListFilter
public sealed class CirculationListFilter
{
public string ColumnName { get; set; }
public string Comparitor { get; set; }
public string Value { get; set; }
}
Теперь, когда я запускаю код, контроллер не передает ему коллекцию JSON; filters
всегда равно нулю. Однако, если я сделаю это:
$.ajax({
url: self.LoadCirculationListUrl,
cache: false,
async: false,
dataType: 'json',
contentType: 'application/json; charset=utf-8',
data: { "ColumnName":"Germany","Comparitor":">","Value":"3"}
});
и контроллер выглядит так:
public ActionResult LoadCirculationData(CirculationListFilter filters)
{
}
Данные передаются нормально. Почему контроллер не может связать коллекцию элементов JSON?
EDIT:
Я изменил вызов AJAX, чтобы использовать это:
data: { filters: [{ "ColumnName": "France", "Comparitor": "=", "Value": "1" }, { "ColumnName": "Germany", "Comparitor": ">", "Value": "3" }]},
и ActionResult:
public ActionResult LoadCirculationData(List<CirculationListFilter> filters)
Теперь filters
содержит 2 элемента, но каждый из классов CirculationListFilter
заполнен данными NULL в своих свойствах. Так что я все ближе, но фактические значения не связаны.