2017-09-26 10 views
0

My ajaxはFormDataを使用し、単一の(FormData)オブジェクトに複数のField値(Text-box、label、Fileなど)を追加しています。私はサーバー側でそのデータを投稿しましたが、FormData(Ajax)を使用してコントローラ側で複数のデータを受信する方法は?

コントローラで同じデータオブジェクトを受け取る方法は?

いるFormData変数:

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

Javasacript方法AJAX呼び出し:

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は、より多くのデータを持っている場合、同じデータを受信する方法コントローラの側で何が、私は特定のデータオブジェクトを使用したい場合。

答えて

0

あなたはそれは2つの部分で動作します

かなり複雑でカスタマイズされたフォームを受け取ることができます。

パート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*/ 
} 

それが役に立てば幸い。助けが必要な場合は、私に質問してください。

+0

これは本当に非常に有用な答えです、私は挑戦的にこれを実装します –

+0

あなたの問題が解決した場合、詳細としてあなたの質問を編集するか、これを答えとしてマークしてください。 – Terrance00

関連する問題