2017-07-27 10 views
0

私は、ファイルといくつかの変数をajaxを使用してコントローラアクションに投稿しようとしていましたが、両方の変数に対してnullパラメータを取得しています。以下 は私のAJAX呼び出しHttpPostedFileBaseとその他の変数をajax POSTでmvcコントローラに渡す

$("#btn-upload").on("click", function() { 
       var rows =$("[name='rows']").val(); 
       var formData = new FormData($('#excel-upload-form')[0]); 
       var Data = formData+"&rows="+rows; 
       $.ajax({ 
        url: '/MVC/UploadExcel/UploadExcel', 
        type: 'POST', 
        data: Data, 
        cache: false, 
        contentType: false, 
        processData: false, 
        success: function (result) { 
         if (result=='True') { 
          $(".alert-success").show(); 
         } 
         else { 
          $(".alert-danger").show(); 
         } 
        }, 
        error: function (jqXHR, textStatus, errorThrown) { 
         $(".alert-danger").show(); 
        }, 

       }); 
      }); 

で、私のコントローラのアクションは

[HttpPost] 
     public bool UploadExcel(HttpPostedFileBase uploadedFile, int? rows) 
     { 
     var excelUtility = new ExcelUtilityService(); 
     bool success=false; 
     if ((uploadedFile != null || uploadedFile.ContentLength > 0)&& rows !=null) 
     { 
     success = excelUtility.ProcessFile(uploadedFile, rows); 
     } 
     return success; 
     } 

私はアヤックスでのみファイルのパラメータを渡すと呼んでそれが正常に動作しますが、私は複数のパラメータなどでそれをしようとするとあります私のコードで '行'、両方のパラメータは、私のコントローラのアクションでは、ポストの間にnullになります。

+0

使用するようにスクリプト 'formData.append( '行'、行)を変更し、代わりに' VARデータの '= FORMDATA + "&行=" +行;'( 'データを持つ:formdata'を) –

+0

はい、それは@StephenMueckeありがとうございました:) 私はそれを完了することができるように答えを投稿してください –

答えて

1

FormDataオブジェクトに値を追加するには、.append()を使用する必要があります。

$("#btn-upload").on("click", function() 
    var rows =$("[name='rows']").val(); 
    var formData = new FormData($('#excel-upload-form')[0]); 
    formData.append('rows', rows); // modify 
    $.ajax({ 
     url: '/MVC/UploadExcel/UploadExcel', 
     type: 'POST', 
     data: formData, // modify 
     cache: false, 
     contentType: false, 
     processData: false, 
     success: function (result) { 
      .... 
関連する問題