0

我在ASP.NET Boilerplate ( ABP ) 和 AngularJS 中工作。我在前端使用带有剑道上传的控制器(上传文件)。要访问控制器,我使用单击 kendo 按钮单击它,如下所示:

($("#files").data("kendoUpload")).options.async = vm.uploadOptions(onUpdate);
$('.k-upload-selected').click();

函数vm.uploadOptions(onUpdate)获取 ID 列表并返回retObject如下

var retObject = { saveUrl: '/ControllerName/ActionName?id=15&id=16', autoUpload: false, batch: true }

现在是实际问题:当我像上面一样在 retObject 中分配 saveUrl 时

retObject.saveUrl = '/ControllerName/ActionName?id=195&id=196&id=197'

(ids 硬编码),输入控制器(我在那里有一个断点),我有一个包含两个元素的 C# 列表。

当我分配网址时:

vm.url = '/ControllerName/ActionName?fileId=' + fileIds[0];
len = fileIds.length;
for (var i = 1; i < len; i++) {
    vm.url += '&fileId=' + fileIds[i];
}
retObject.saveUrl = vm.url;

控制器未输入。

最后(这是我现在在代码中使用的),当我分配时

vm.url = '?fileId=' + fileIds[0];
len = fileIds.length;
for (var i = 1; i < len; i++) {
    vm.url += '&id=' + fileIds[i];
}
retObject.saveUrl = '/ControllerName/ActionName' + vm.url;

它确实有效 - 使用正确的 id 列表输入控制器。

当我复制动态生成的(不工作的)字符串并将其分配为硬编码时,它开始工作。为什么会发生,我的意思是:为什么以不同方式初始化的完全相同的字符串会产生不同的结果?

4

0 回答 0