.net core 2.1 связывающий массив в ajax-запросах от axios и Vue.js - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть несколько флажков, которые связаны со свойством данных Vue.js.При нажатии на кнопку я беру значение этого свойства и использую axios для отправки запроса GET на мой контроллер ASP.NET Core 2.1 для обработки запроса.

По какой-то причине конкретный параметр никогда не кажетсяполучить привязку из запроса и всегда пусто.

Кажется, я не могу получить параметр ratings для привязки.Все остальные параметры связываются нормально.

Код контроллера

public IActionResult Get(float lat, float lng, int radius, int fetch,  List<int> ratings )
{
    return this.Json(locationService.FindClosestsBusinesses(lng, lat, radius, fetch));
}

Vue.js / Javascript

axios.get(query, {
    params: {
        ratings: app.ratings,
        lat: latitude,
        lng: longitude,
        radius: app.distance,
        fetch: app.fetchamount
    }
}).then(function(response) {
    app.datapoints = response.data;
});

app.ratings - это простой массив ["5", "1"]

При просмотре вкладки сети chromes заголовки в настоящее время выглядят так: enter image description here

Какие изменения мне нужнысделать так, чтобы app.ratings успешно связывался с моим List<int> ratings параметром действия контроллера в запросе ajax?

1 Ответ

0 голосов
/ 23 сентября 2018

Причиной сбоя привязки является дополнительный [] в конце ratings в параметрах строки запроса.ASP.NET Core ожидает, что это будет просто ratings (не ratings[]).Один из вариантов выполнения этой работы - сообщить ASP.NET Core, что имя на самом деле ratings[], что можно сделать с помощью атрибута FromQuery со свойством Name, например:

public IActionResult Get(float lat, float lng, int radius, int fetch,
    [FromQuery(Name="ratings[]")] List<int> ratings)
{
    ...
}

Существует проблема GitHub именно для этой проблемы здесь , где также предлагаются другие предложения для решения этой проблемы.

...