Как отправить коллекцию / массив в действие MVC через AJAX - PullRequest
7 голосов
/ 21 декабря 2010

атм Я пытаюсь вот так, но не повезло, я получаю нулевое значение в своем действии Do

var arr = [31,17,16];

$.get('<%=Url.Action("Do", "Foo") %>', 
       {ids:arr},
       function(d){...});

public ActionResult Do(IEnumerable<int> ids)
{
...
}

Ответы [ 2 ]

6 голосов
/ 21 декабря 2010

Попробуй так:

$.ajax({
    url: '<%= Url.Action("Do", "Foo") %>',
    data: { ids: [ 31, 17, 16] },
    traditional: true,
    success: function(result) {

    }
});

Обратите внимание на параметр traditional: true.

Или если вы настаиваете на функции $.get():

$.get(
    '<%= Url.Action("Do", "Foo") %>', 
    $.param({ ids: [31, 17, 16] }, true), 
    function (result) {

    }
);
2 голосов
/ 17 августа 2012

Я просто наткнулся на эту проблему, но вместо этого нашел альтернативное решение. Я предпочитаю это больше traditional, поэтому я опубликую это здесь, чтобы другие могли выбирать сами.

$.ajax(url, 
    {
        type: method,                    //"GET", or "POST", etc. The REST verb
        data: JSON.stringify(myData),    //stringify your collection or complex object
        contentType:"application/json",  //tell the controller what to expect
        complete: callback
    });
});

Это работает для каждого типа данных, которые я отправил, независимо от того, насколько сложный. На самом деле мы заключили это в класс под названием RequestService, который делает это для всех запросов от нашего клиентского скрипта к контроллеру API MVC. Есть много других приятных атрибутов для этого объекта, таких как timeout или headers. Ознакомьтесь с полными документами здесь .

Я использую .NET Framework 4.5 и JQuery 1.7.1, хотя я считаю, что эта версия $.ajax начиная с 1.5

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...