2016-06-24 7 views
0

Ich verwende JQuery Fileupload, um Dateien von meiner Ansicht auf den Server in .NET zu laden. Ich habe versucht, zusätzliche Informationen zum Upload hinzuzufügen, die Werte von zwei Combobox auf der Seite sind. Ich folgte der documentation und entschied, meine Combobox-Werte in formData programmgesteuert hinzuzufügen. Es funktioniert jedoch nicht wie vorgesehen.Kann formData nicht korrekt serverseitig in ASP.NET lesen

Hier ist meine 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); 
    } 
}) 

Und hier ist mein controller function:

[HttpPost] 
    public ContentResult UploadFiles(string data) 
    { 
     string sector = Request.Form["SectorCode"]; 
     string app = Request.Form["AppName"]; 
    ..... 
    } 

Das Problem hierbei ist, dass Sektor und App beide null zurück. Jedoch, wenn ich {SectorCode: 3, AppName: myApp} passiere, werde ich die guten Werte Serverseite haben. Was ist hier falsch?

EDIT:

Hier ist mein relevanten HTML-Teil:

<input id="fileupload" type="file" name="files[]" multiple accept="application/pdf"> 
+0

Verwenden Sie ASP.NET-Serversteuerelemente? –

+0

haben Sie versucht, Anführungszeichen hinzuzufügen? '" \ "" + $ ("# comboSector"). Val() + "\" "' – Legends

+0

Ja, ich habe es versucht! @Legends – Quentin

Antwort

0

die folgenden Versuchen Sie, sicherzustellen, dass die Formularelemente die Eigenschaft name definiert haben:

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

und überspringen die formData Eigentum insgesamt.

Wenn nicht, posten Sie bitte Ihre HTML?

+0

Ich habe den HTML-Code hinzugefügt. Meine Eingabe ist nicht in einer Form – Quentin

0

Ich schlage vor, folgende Verwendung zu verwenden.

Ihre HTML, (Achtung Eingangs Namen einzureichen. Es sollte in dem Modell entsprechen)

<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> 

Erstellen Sie ein Modell für Ihre Aktion

public class FormData 
{ 
    public List<HttpPostedFileWrapper> files { get; set; } 
    public string SectorCode { get; set; } 
    public string AppName { get; set; } 
} 

und definieren Sie Ihre Controller-Aktion wie diese

[HttpPost] 
public JsonResult UploadFiles(FormData data) 
{ 
    ... 
} 

Um zusätzliche Formulardaten anzufügen, verwenden Sie das Dateiupload-Submit-Ereignis

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