2016-06-24 9 views
0

私はJQuery Fileuploadを使用して、.NETのサーバーに自分のビューからファイルをアップロードします。アップロードに追加情報を追加しようとしましたが、これはページ内の2つのコンボボックスの値です。私はdocumentationに続き、formDataに私のコンボボックスの値をプログラムで追加することにしました。しかし、意図どおりに動作しません。ASP.NETのサーバー側を正しく読み取ることができません

はここに私の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"> 
+0

ASP.NETサーバーコントロールを使用していますか? –

+0

引用符を追加しようとしましたか? '" \ "" + $( "#comboSector")。val()+ "\" " – Legends

+0

はい、これを試しました! @Legends – Quentin

答えて

0

は、フォーム要素が定義された名前のプロパティを持っていることを確認して、次のことを試してみてください。

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

formDataをスキップすべての財産。

もしそうでない場合は、htmlを送信してください。

+0

私はHTMLを追加しました。私の入力はフォームにありません – Quentin

0

次の使用方法をお勧めします。

の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) 
{ 
    ... 
} 

追加のフォームデータを追加するには、ファイルアップロードサブミットイベント

$(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() 
     }; 
    }); 
});