【问题标题】:.net core 2.1 binding array in ajax request from axios and Vue.js来自 axios 和 Vue.js 的 ajax 请求中的 .net core 2.1 绑定数组
【发布时间】:2019-02-27 07:11:59
【问题描述】:

我有几个绑定到 Vue.js 数据属性的复选框。单击按钮时,我获取此属性的值并使用 axios 向我的 ASP.NET Core 2.1 控制器发送 GET 请求以处理请求。

由于某种原因,特定参数似乎永远不会从请求中绑定并且始终为空。

我似乎无法绑定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 网络选项卡时,标题当前如下所示:

我需要做哪些更改才能让app.ratings 成功绑定到我的List&lt;int&gt; ratings ajax 请求上的控制器操作参数?

【问题讨论】:

    标签: javascript c# asp.net-core axios asp.net-core-2.1


    【解决方案1】:

    绑定失败的原因是查询字符串参数中ratings 末尾的额外[]。 ASP.NET Core 预计这只是ratings(而不是ratings[])。完成这项工作的一种选择是通知 ASP.NET Core 该名称实际上是 ratings[],这可以通过使用带有 Name 属性的 FromQuery 属性来完成,如下所示:

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

    对于这个问题here 有一个 GitHub 问题,其中还提出了其他处理此问题的建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 2018-12-15
      相关资源
      最近更新 更多