【发布时间】:2019-02-04 16:01:17
【问题描述】:
使用 angularjs 1.3 和 C# .net core web api
我有一个用于上传文件的 ng-file-upload。当调用上传方法时,我想将一些数据的额外数组传递给上传方法,然后由我的 web api 上的方法接收。这是我的 ng-file-upload
factory.upload = function (file, myArray) {
var url = '{0}upload'.format(apiPath)
return Upload.upload({
url: url,
arrayKey: '',
data: { file: file, myArray: myArray}
}).then(function (res) {
return res;
});
};
下面是我的 webapi:
[HttpPost("upload")]
public async Task<IActionResult> FileUpload(IFormFile file, List<string> myArray)
{
//code
}
最后这里是我尝试传递的数组并上传到我的 webapi:
[
{
id: "1",
name: "steve"
},
{
id: "2",
name: "adam"
}
]
问题出在我的 webapi 中,从 UI 接受数组的 myArray 参数始终为空。我在网上搜索并提到要添加
arrayKey: ''
但是还是不行。有输入吗?
---更新---
我创建了一个字符串数组:
var cars = ["steve", "adam", "ronnie"];
并将我的 api 更新为:
List<ArrayItem> myArray
上面的代码有效。所以看起来传递数组有问题。 我通过这样创建来传递以下数组:
var myArray= [];
for (var i = 0; i < myJson.length; i++) {
myArray.push({
id: myJson[i].id,
name: myJson[i].name,
});
}
上面的结果如控制台所示:
Array(2)
0:{id: "1", name: "steve"}
1:{id: "2", name: "adam"}
这里缺少什么?
【问题讨论】:
-
我没有给你一个准确的答案,但我确实想指出你的 API 方法需要
List<string>,但你实际上是在发送它List<object>(可能不是“object ",您可能需要为此 id/name 对象创建一个接口)。也许这就是它为空的原因? -
@HankScorpio 我已尝试使用该对象也仍然无法正常工作。我的 ng-file-upload 呢,有什么变化吗?
标签: angularjs json asp.net-web-api asp.net-core-webapi ng-file-upload