【发布时间】:2016-01-14 22:26:21
【问题描述】:
这是我在这里的第一个问题,所以请温柔...我有一个 cshtml (ASP.NET MVC 5) 页面,我想将文档上传到我已经存储到的某些行(在页面上的 dataTable 中)一个json。 json 看起来像这样:
JSON:
var jsonDataIds = [
{"Id":"9f835451-14ba-e511-a63e-643150188f7f",.. more data},
{"Id":"a0835451-14ba-e511-a63e-643150188f7f",.. more data},
{"Id":"a1835451-14ba-e511-a63e-643150188f7f",.. more data}];
我正在使用 blueimp fileupload 来处理文件上传。
这是初始化页面中元素的脚本:
Javascript:
$("#inFile").fileupload({
url: 'attachFile',
dataType: 'json',
formData: {ecId:jsonDataIds,usrId:"@User.GetId()"},
add: function(e, data) {
fileData = data;
},
done: function(event, data) {
alert(data.message);
},
fail: function(event, data) {
alert("Error uploading the file.");
}
});
$("#btnUpload").on('click', function() {
if(fileData){
fileData.submit();
}
});
当我签入控制器attachFile时,收到usrId,收到文件,但没有收到ID。
我认为可能存在一个限制,即您只能发送字符串而不是 json 对象。
控制器:(部分)
public ActionResult attachFile(List<MyModel> ecId, string modUsrId)
// modUsrId is ok, ecId is NULL
{
for (int i = 0; i < Request.Files.Count; i++)
// Request.Files.Count is ok
【问题讨论】:
-
jsonDataIds 的定义中缺少右方括号。当然,我知道这只是您在 SO 中的信息中的一个错字
-
谢谢马可!我会编辑:)
-
我现在让它工作了......我将 json 变成了一个字符串并将其发送到控制器,然后将字符串反序列化为我的模型列表。我不喜欢这个解决方案......我会等着看是否还有更多。
-
您是否尝试过为 Id 列使用不同的名称?会不会是库中的错误?
-
我建议用户使用 Chrome 开发工具或 Fiddler 来验证发送了哪些数据。然后你就可以理解是javascript库的问题还是服务器反序列化的问题了。
标签: javascript c# jquery asp.net json