2016-09-19 3 views
0

Ich arbeite an einer ziemlich alten VB.NET ASP.NET-Website und versuchen, Drag-and-Drop-Upload sowie "Browse" -Funktionalität zu verdrahten. Alles funktioniert, wenn Sie nur auf die Seite gehen und hochladen. Wenn Sie jedoch Aktivitäten im UpdatePanel auf der Seite ausführen, wird die Funktionalität unterbrochen. Also, habe ich in meinem Page_Load:jQuery FileUpload Registrierung mehrere Male

' register the script that wires up the upload region 
     Dim cstext1 As String = "setupFileUpload();" 
     ScriptManager.RegisterStartupScript(upfiles, upfiles.GetType(), "UploadFileSetup", cstext1, True) 

das funktioniert, aber das Problem ist, dass, wenn Sie mehrere Operationen ausführen das Fileupload sein Verhalten zu halten scheint Registrierung. Wenn ich also eine Datei hochlade, wird sie mehrmals angezeigt (Beispiel: 5 Dateiuploads im Hintergrund.

Mein Javascript sieht ungefähr so ​​aus. Irgendwelche Vorschläge, wie ich überprüfen kann, ob der Handler bereits registriert ist?

Schnipsel.

function setupFileUpload() { 
     if ($('#fileupload').fileupload) return; 

     $('#fileupload').fileupload({ 
      dataType: 'json', 
      url: '<%= ResolveUrl("AjaxFileUpload.ashx") %>', 
      add: function (e, data) { 
       $('#<%= lblErrorFileType.ClientID %>').css('display', 'none'); 
       var valid = true; 
       var re = /^.+\.((txt)|(jpeg)|(jpg)|(png)|(gif)|(pdf)|(doc)|(docx)|(xls)|(xlsx))$/i; 
       $.each(data.files, function (index, file) { 
        if (!re.test(file.name)) { 
         $('#<%= lblErrorFileType.ClientID %>').css('display', ''); 
         valid = false; 
        } 
       }); 

       if (valid)... 
+0

Entschuldigung, sollte erwähnt haben, dass die Zeile mit if ($ ('# fileupload') .fileupload) zurückgibt; war ein Versuch, Mehrfachregistrierung zu vermeiden, aber es scheint alles zu brechen, falls das Updatepanel zurückschlägt. Vielen Dank. – HelluvaEngineer

Antwort

0

So nach ein paar Dinge zu versuchen, ich diesen Anruf Sys.WebForms.PageRequestManager hinzugefügt, die viel besser zu funktionieren scheint als die Funktionsnamen im Hinterher Code vorbei

$(document).ready(function () { 
            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(setupFileUpload); 
            $('#<%= lblErrorFileType.ClientID %>').css('display', 'none'); 
            setupFileUpload(); 
        });