我们正在使用 knockoutjs postJson util 提交一个 asp.net mvc View 表单。一切正常,但现在我们想在表单中添加文件上传选项。
根据 Uploading file in asp.net mvc ,我们在 Form 中添加了元素和 enctype="multipart/form-data"属性,但是在 Controller 的 Request.Files 集合中没有得到任何文件
使用 ko.utils.postJson 有什么问题吗?有没有更好的方法来上传文件和我的表单数据?
最佳答案
postJson
src 正在做 JSON.stringify
在它创建的每个输入上并将其作为输入元素插入到内部表单元素中:
for (var key in data) {
var input = document.createElement("INPUT");
input.name = key;
input.value = ko.utils.stringifyJson(ko.utils.unwrapObservable(data[key]));
form.appendChild(input);
}
因此,来自文件输入的文件数据无法通过 javascript 加载以通过
postJson
发布。调用当前存在的方法,因此您最好的选择是仅上传文件并在两个单独的请求中发布 JSON。也可以将文件输入注入(inject)此表单 postJson
方法创建(通过覆盖该方法),但它的类型很hacky并且可能不向前兼容。
关于asp.net-mvc - 使用 asp.net mvc 3 和 knockoutjs 发布 viewModel 并上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8151761/