2016-09-19 52 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(); 
        });