У меня есть такой массив:
var nums=["21", "22", "23", "20", "19", "18"];
и этот код JQuery Ajax:
$('#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: // локальный: 18322 / парикмахерская / ServiceUpdate 500 — внутренняя ошибка сервера)
n.ajaxTransport.k.cors.a.crossDomain.send @ jquery-2.1.4.min.js: 4n.extend.ajax @ jquery-2.1.4.min.js: 4 (анонимная функция) @ Парикмахерская: 481n. event.dispatch @ jquery-2.1.4.min.js: 3n.event.add.r.handle @ jquery-2.1.4.min.js: 3
Я попробовал все ответы в этой ссылке и некоторых других:
500-внутренний сервер ошибки на Jquery-АЯКС-пост-Asp-нетто-Mvc
передать-массив-к-АЯКС-запрос-в-Аякса
но все еще есть проблема. спасибо
Это ноль, потому что на стороне JavaScript вы используете массив.
var nums=["21", "22", "23", "20", "19", "18"];
Однако на стороне контроллера вы ожидаете строку.
public ActionResult ServiceUpdate(string nums)
Изменить сторону контроллера на
public ActionResult ServiceUpdate(List<string> nums)
Кроме того, в ваших настройках AJAX, убедитесь, что вы установили traditional
к истине
$.ajax({
url: "/BarberShop/ServiceUpdate",
type: "Post",
data:{ nums: nums},
dataType: "json",
success: function (data) {
},
traditional: true
});
Увидеть Как я могу разместить массив строк в ASP.NET MVC Controller без формы?
Обновить
Причина, по которой вы должны использовать List<string>
имеет отношение к привязке параметров. Когда вы передаете данные в виде массива, механизм связывания внутренних параметров будет искать похожий тип / структуру в параметрах для привязки. Вот почему вы не можете связать JavaScript Array
на C # string
,
Других решений пока нет …