javascript — публикация массива с использованием JQuery Ajax причина 500 (внутренняя ошибка сервера) в MVC

У меня есть такой массив:

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

передать-массив-к-АЯКС-запрос-в-Аякса

но все еще есть проблема. спасибо

4

Решение

Это ноль, потому что на стороне 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,

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]