如何使用FormData(Ajax)在控制器端接收多个数据?

时间:2017-09-26 10:46:26

标签: ajax asp.net-mvc-4 form-data

我的ajax使用了FormData并在单个(FormData)对象中附加了多个Field值(如Text-box,label,File)。我已经在服务器端发布了这些数据,但是

如何在控制器中接收相同的数据对象?

FormData变量:

var uploadFile = new FormData();
        var files = $("#UploadFile").get(0).files;
        if (files.length > 0) {
            uploadFile.append("Doc", files[0]);
        }
  FileUpload(uploadFile);

Javasacript方法Ajax Call:

 function FileUpload(uploadFile)
{
    var url = '@Url.Action("UploadCsvFile")';

    $.ajax({
        url:url,
        contentType: false,
        processData: false,
        data:uploadFile,
        type: 'POST',
        success: function () {
            alert("Successfully Added & processed");

        }
    });

我的问题是....如果以防万一,我的ajax有更多的数据,如何在控制器端接收相同的数据以及如果我想使用特定的数据对象。

1 个答案:

答案 0 :(得分:0)

您可以接收非常复杂的自定义表单

它将分为两部分:

第1部分 - 扩展html FormData:

uploadFile.append("TextData", "This is my text data");

第2部分 - 扩展您的控制器:

我认为你的模型看起来像这样:

public class MyModel
{
     public HttpPostedFileBase Doc{ get; set;}
}

现在只需将自定义数据添加到其中:

public string TextData {get;set;}

在你的控制器方法中:

public JsonResult MyUploadMethod(MyModel model)
{
    /*From here you will have access to the file and the text data*/
}

希望它有所帮助。如果您需要帮助,请向我提问。