ASP.NET WebApi POST无法识别form-urlencoded int数组

时间:2017-12-27 22:45:15

标签: javascript c# file post asp.net-web-api

所以this帖子给出了如何使用表单发送下载文件的帖子的答案。但我的API端点并没有识别表单数据。

[HttpPost]
public async Task<IHttpActionResult> DownloadPdfs([FromBody] IEnumerable<int> ids)
{
    if (ids == null || ids.Count() < 1)
    {
        return BadRequest("No ids supplied.");
    }
    ...

&#39; IDS&#39;总是有0的数。

这是JS代码:

function downloadFile(ids) {    
  var win = 'w' + Math.floor(Math.random() * 1000000000000);
  window.open('', win, 'width=250, height=100');
  var f = $('<form></form>')
      .attr({ target: win, method: 'post', action: 'api/pdfs' })
      .appendTo(document.body);
  _.each(ids, function (id) {
      $('<input></input>')
          .attr({ type: 'hidden', name: 'ids', value: id })
          .appendTo(f);
  });
  f[0].submit();
  f.remove();
}

最初,我只是将它与其他链接的答案相同,这只是一个输入附加到表单的输入,我在其中将值设置为&#39; ids&#39;。我接下来尝试了这个,但那仍然没有用。

有没有人知道如何调整它仍然使用post数据来提供我的id,这是创建和提供下载文件所需要的?或者有更好的方法吗?

我尝试过只使用Ajax,它返回responseText中的文件内容,但我无法在那里使用它,我无法让浏览器打开它

修改1

  • 我也尝试将值设置为:
        value: '{ids: [' + ids.toString() + ']}'
    那不行。

修改2

  • 只是尝试将端点参数更改为:
        ([FromBody] int[] ids)
    ......无济于事

0 个答案:

没有答案