2016-09-19 4 views
0

Я работаю на довольно старом веб-сайте VB.NET ASP.NET и пытаюсь подключить функцию перетаскивания, а также функцию «просматривать». Все работает, если вы просто заходите на страницу и загружаете. Однако, если вы выполняете какие-либо действия в UpdatePanel на странице, функциональность ломается. Таким образом, я добавил это в моем Page_Load:jQuery FileUpload регистрируется несколько раз

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

Это работает, но проблема заключается в том, если вы запускаете несколько операций FileUpload, кажется, продолжает регистрировать свое поведение. Итак, если я загружаю файл, он отображается несколько раз (пример - 5 загрузок файлов происходят в фоновом режиме.

Мой javascript выглядит примерно так. Любые предложения о том, как я могу проверить, зарегистрирован ли обработчик?

фрагмент кода:.

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

Извините, вы должны были упомянуть, что строка с if ($ ('# fileupload'). Fileupload) return; была попытка избежать многократной регистрации, но, похоже, она сломала все в том случае, если обновленная панель возвращается. Благодарю. – HelluvaEngineer

ответ

0

Таким образом, после попытки несколько вещей, я добавил этот вызов Sys.WebForms.PageRequestManager, который, кажется, работает намного лучше, чем передавая имя функции в коде-за

$(document).ready(function () { 
            Sys.WebForms.PageRequestManager.getInstance().add_endRequest(setupFileUpload); 
            $('#<%= lblErrorFileType.ClientID %>').css('display', 'none'); 
            setupFileUpload(); 
        }); 
Смежные вопросы