【问题标题】:Blueimp fileupload send json object to controller on submitBlueimp fileupload 在提交时将 json 对象发送到控制器
【发布时间】: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


【解决方案1】:

“问题”已通过将 json 对象作为字符串发送,然后在控制器端进行序列化来解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-09
    • 2020-08-14
    • 1970-01-01
    • 2014-10-20
    • 2021-03-17
    相关资源
    最近更新 更多