Публикация массива с помощью jQuery Ajax вызывает 500 (Внутренняя ошибка сервера) в MVC
У меня есть такой массив:
var nums=["21", "22", "23", "20", "19", "18"];
И этот Ajax-код jQuery:
$('#chk').click(function () {
$.ajax({
url: "/BarberShop/ServiceUpdate",
type: "Post",
data:{ nums: nums},
dataType: "json",
success: function (data) {
}
});
});
И действие контроллера, подобное этому:
[HttpPost]
public ActionResult ServiceUpdate(string nums)
{
//Do something......
return View();
}
Проблема в том, что когда я публикую массив с помощью параметра ajax nums
в действии контроллера null
, а также сервер выдает мне эту ошибку:
СООБЩЕНИЕ http://localhost:18322/BarberShop/ServiceUpdate 500 (Внутренняя ошибка Сервера)
N.ajaxтранспорт.k.корс.а.междоменный.отправить @jquery-2.1.4.мин.js:4n.расширить.ajax @ jquery -2.1.4.мин.js:4 (анонимная функция) @Парикмахерская:481n.событие.отправка @jquery-2.1.4.мин.js:3n.событие.добавление.r.обработка @jquery-2.1.4.мин.js:3
Я перепробовал все ответы по этим ссылкам и некоторым другим:
500- внутренняя-серверная-ошибка-при-jquery-ajax-после-asp-net-mvc
Передать массив в ajax-запрос в ajax
Но все еще есть проблема. спасибо
1 answers
Значение равно нулю, потому что на стороне javascript вы используете массив.
var nums=["21", "22", "23", "20", "19", "18"];
Однако на стороне контроллера вы ожидаете строку.
public ActionResult ServiceUpdate(string nums)
Измените сторону контроллера на
public ActionResult ServiceUpdate(List<string> nums)
Кроме того, в настройках ajax убедитесь, что вы установили для traditional
значение true
$.ajax({
url: "/BarberShop/ServiceUpdate",
type: "Post",
data:{ nums: nums},
dataType: "json",
success: function (data) {
},
traditional: true
});
См. Как я могу опубликовать массив строк в ASP.NET Контроллер MVC без формы?
Обновление
Причина, по которой вы должны использовать List<string>
, связана с привязка параметров. Когда вы используете данные ajax в виде массива, связыватель внутренних параметров будет искать аналогичный тип/структуру в параметрах для привязки. Вот почему вы не можете привязать javascript Array
к C# string
.