2016-09-19 55 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) 

這一工程,但問題是,如果你運行多個操作的文件上傳似乎保持其註冊行爲。所以如果我上傳一個文件它會出現多次(例如 - 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)返回的行;試圖避免多次註冊,但它似乎在updatepanel發回的情況下破壞了所有內容。謝謝。 – HelluvaEngineer

回答

0

所以,在嘗試了幾件事情之後,我加入這個呼叫Sys.WebForms.PageRequestManager,這似乎工作比在代碼隱藏傳遞函數名要好得多

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