如何通过将其他模型属性传递给控制器​​来使用ajax上传文件?

时间:2013-10-18 11:55:34

标签: jquery asp.net ajax asp.net-mvc

我正在尝试使用jquery ajax上传文件。我通过引用http://powerdotnetcore.com/asp-net-mvc/asp-net-mvc-simple-ajax-file-upload-using-jquery做了同样的事情。它适用于单个文件。

但我必须上传多个文件,即使我有一对多关系的模型,我必须在上传文件之前保存模型值。

如果完成回发,它运作良好。但是如果我将表格序列化则不起作用。

请帮助解决同样的问题。

有没有办法不使用任何插件来解决相同的问题?表单序列化的替代方法是什么?

1 个答案:

答案 0 :(得分:-1)

使用formData参数并通过它传递值。

var input = $('#input');
$('#fu-my-simple-upload').fileupload({
                url: '/File/UploadFile',
                dataType: 'json',
                formData : {id: input.val()},
                add: function (e, data) {
                    jqXHRData = data
                },
                done: function (event, data) {
                    if (data.result.isUploaded) {

                    }
                    else {

                    }
                    alert(data.result.message);
                },
                fail: function (event, data) {
                    if (data.files[0].error) {
                        alert(data.files[0].error);
                    }
                }
            });

也可以在控制器中添加参数名称。

    public virtual ActionResult UploadFile(string id)
    {
     IEnumerable<HttpPostedFileBase> myFile = Request.Files["MyFile"];
     foreach(var file in myfile)
     {
     // save file one by one
     }        
     // now put your code
    }

在html输入字段中使用此...

<input type="file" multiple="" name="myfile[]">

希望这会有所帮助......