Обработка нескольких параметров с одинаковым именем, отправленных в Web API Controller - PullRequest
0 голосов
/ 19 октября 2018

У меня есть HTML-форма, которая содержит элемент <select multiple>.т.е. пользователь может выбрать более одного варианта из списка.Я использую jQuery для сериализации данных формы и отправки их на контроллер веб-API (ASP.NET MVC).

Проблема в том, что сериализация приводит к строке запроса, содержащей несколько параметров с одинаковым именем.Вот jQuery:

$('#submit').click(function () {

    var filters = $('#form').serialize();

    $.getJSON("/Api/GetData?" + filters, function (data) {
        // Do something with data
    });

});

Результирующий вызов API выглядит следующим образом:

/Api/GetData?selection=1234&selection=7432&selection=23

Контроллер API, похоже, принимает только первое значение для параметра 'selection'.Он делает что-то вроде этого:

public void GetData(string selection){
    …
}

Мне было интересно, есть ли способ заставить контроллер API обрабатывать параметры как коллекцию, или это должно быть обработано на стороне клиента, то есть путем обеспечения значения параметровотправляются в виде списка через запятую (/Api/GetData?selection=1234,7432,23).Если последнее, есть ли удобный способ сделать это, а не создавать строку запроса вручную?

Большое спасибо.

1 Ответ

0 голосов
/ 19 октября 2018

Благодаря комментариям, которые я нашел, изменение параметра контроллера работает:

public void GetData([FromUri] string[] selection){

(похоже, требуется декоратор [FromUri])

...