Когда я отправляю список целых с jQuery, как это:
$.ajax('@Url.Action("Execute")', {
type: 'POST',
data: {
pkList: [1,2,3]
}
});
Затем jQuery преобразует объект pkList и отправит его по почте следующим образом:
pkList[]:1
pkList[]:2
pkList[]:3
Что было бы хорошо, если сервер PHP, но я использую Asp.NET MVC3 и пытаюсь получить эти значения с помощью связывателя модели по умолчанию:
public ActionResult Execute(ICollection<int> pkList)
Но pkList всегда равен нулю, похоже, что механизм связывания модели по умолчанию не может связать его.
Как мне решить это правильно?
ДОБАВЛЕНО РЕШЕНИЕ
Я использовал решение от Дарина Димитрова с настройкой опции traditional
в jQuery:
$.ajax('@Url.Action("Execute")', {
type: 'POST',
traditional: true,
data: {
pkList: [1,2,3]
}
});
Теперь jQuery больше не добавляет []
к параметрам, и они отправляются так:
pkList:1
pkList:2
pkList:3
И связыватель модели MVC по умолчанию получает значения правильно.
Надеюсь, это кому-нибудь поможет.