Как я могу отправить массив int из $.ajax в С# mvc?
Как я могу отправить массив int из ajax в С# mvc?
Ответ 1
$.ajax({
url: <Url of the action>,
type: "POST",
data: JSON.stringify([1,2,3]),
dataType: "json",
contentType: 'application/json; charset=utf-8'
});
и в действии.
public ActionResult ReceiveIntArray(int[] ints)
{
...
}
mvc должен автоматически анализировать json.
просмотрите этот вопрос.
Ответ 2
Попробуйте решить этот вопрос:
Установите для свойства
traditional
значение true перед выполнением вызова get. то есть:.jQuery.ajaxSettings.traditional = true $.get('/controller/MyAction', { vals: arrayOfValues }, function (data) { ... }
Ответ 3
Самый простой способ - отправить разделительный (запятый, возможно) строковый список ints в качестве аргумента в запросе GET, а затем использовать Sting.Split()
для синтаксического анализа их на вашем С# MVC-приемнике.
Итак, например
$.get("/path-to/receiver/", { myArray: myArray.toString() } );
Затем на сервере используйте
string[] stringArray = Request.QueryString["myArray"].ToString().Split(',')
чтобы извлечь значения в строковый массив, затем Int32.TryParse
, чтобы, наконец, получить массив ints.
Ответ 4
То, как я это делаю, - это простой элемент input:hidden
<input type="hidden" name="elements" value='@String.Join(",", ViewBag.MyArray)' />
И в коде JavaScript я передаю его как строку:
$.ajax({
type: "POST",
url: '/Controller/Method',
data:
{
recipients: $("input[name=elements]").val()
},
traditional: true,
success: updateSelected
});
И, наконец, я просто Split
элементы вроде этого:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(string elements)
{
IList<long> selected = elements.Split<long>(',');
...
}
Ответ 5
Попробуйте это решение:
var Array = [10, 20, 30];
$.ajax({
type: "Post",
datatype: "Json",
url: <Url of the action>,
data: JSON.stringify(Array),
contentType: 'application/json; charset=utf-8',
});