【问题标题】:Problems send Javascript Array to Web API method using GET问题使用 GET 将 Javascript 数组发送到 Web API 方法
【发布时间】:2014-03-26 10:41:12
【问题描述】:

我正在使用 AngularJS $http 将数据发送到我的 Web API 服务器。如果我使用 GET 方法,则服务器上的数组将为空。 使用 POST 方法一切正常。使用 GET 方法发送数组的正确方法是什么?

----GET----

客户端:

     $http({
       method: 'GET',
       url: '/api/Status',
       headers: { 'Authorization': $localStorage.accesstoken },
       data: statusID
     })

服务器端:

    [HttpGet]
    public async Task<List<StatusForUpdate>> GetStatus([FromUri] List<int> StatusID)
    { ... }

----POST----

客户端:

     $http({
       method: 'POST',
       url: '/api/Status',
       headers: { 'Authorization': $localStorage.accesstoken },
       data: statusID
     })

服务器端:

    [HttpPost]
    public async Task<List<StatusForUpdate>> GetStatus(List<int> StatusID)
    { ... }

【问题讨论】:

    标签: c# angularjs post asp.net-web-api get


    【解决方案1】:

    首先,使用data GET 不正确,请改用params

    不幸的是,使用此代码:

    var statusID = [1, 2];
      $http({
           method: 'GET',
           url: '/api/Status',
           headers: { 'Authorization': $localStorage.accesstoken },
           params: statusID
       })
    

    Angular 会发送一个这样的 url:http://server.com/api/Status?0=1&1=2

    但该格式与 web api 默认预期格式不匹配,即:

    http://server.com/api/Status?StatusID=1&StatusID=2

    试试这个:

    var statusID = [1, 2];
          $http({
               method: 'GET',
               url: '/api/Status',
               headers: { 'Authorization': $localStorage.accesstoken },
               params: {StatusID:statusID}
           })
    

    记得将您的 Angular 更新为 版本 >= 1.2.0,对于 1.0.x 版本,网址将如下所示:

    http://server.com/api/Status?StatusID=%5B1%2C2%5D

    如果您使用的是旧的 Angular 版本并且您还不愿意升级,只需手工制作您的 url 以发送到 web api。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-05
      • 1970-01-01
      • 2017-06-09
      • 2016-10-13
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 2016-08-24
      相关资源
      最近更新 更多