繁体   English   中英

无法在ASP.NET的服务器端正确读取formData

[英]Unable to read formData correctly server-side in ASP.NET

我使用JQuery Fileupload将文件从视图上传到.NET中的服务器。 我尝试将其他信息添加到上传中,这是页面中两个组合框的值。 我遵循了文档,并决定以编程方式在formData添加组合框值。 但是,它没有按预期工作。

这是我的fileuploader

$('#fileupload').fileupload({
  dataType: 'json',
  url: '/Home/UploadFiles',
  sequentialUploads: true,
  multipart: true,
  formData: { SectorCode: $('#comboSector').val(), AppName: $('#comboApp').val() },
  autoUpload: true,
  done: function (e, data) {
    $('.file_name').html(data.result.name);
    $('.file_type').html(data.result.type);
    $('.file_size').html(data.result.size);
  }
})

这是我的controller function

 [HttpPost]
    public ContentResult UploadFiles(string data)
    {
        string sector = Request.Form["SectorCode"];
        string app = Request.Form["AppName"];
    .....
    }

这里的问题是扇区和应用程序都返回null。 但是,如果我选择传递{SectorCode: 3, AppName: myApp} ,则服务器端将具有良好的价值。 怎么了

编辑:

这是我相关的HTML部分:

<input id="fileupload" type="file" name="files[]" multiple accept="application/pdf">

请尝试以下操作,确保表单元素已定义name属性:

string sector = Request.Form["comboSector"];
string app = Request.Form["comboApp"];

并完全跳过formData属性。

如果没有,请张贴您的html吗?

我建议使用以下用法。

您的HTML,(注意文件输入名称。它应该与模型匹配)

<select id="SectorCode" />
<select id="AppName"/>
<!-- The file input field used as target for the file upload widget -->
<input id="fileupload" type="file" name="files" multiple>

建立行动模型

public class FormData
{
    public List<HttpPostedFileWrapper> files { get; set; }
    public string SectorCode { get; set; }
    public string AppName { get; set; }
}

然后像这样定义您的控制器动作

[HttpPost]
public JsonResult UploadFiles(FormData data)
{
    ...
}

为了附加其他表单数据,请使用fileuploadsubmit事件

$(function () {
    'use strict';
    // Change this to the location of your server-side upload handler:
    var url = '@Url.Action("Upload","Home")';
    $('#fileupload').fileupload({
        url: url,
        dataType: 'json',
        done: function (e, data) {
            // handle done event.
        },
    }).bind("fileuploadsubmit", function (e, data) {
        data.formData = {
            SectorCode: $("#SectorCode").val(),
            AppName: $("#AppName").val()
        };
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM