我正在一个非常古老的VB.NET ASP.NET网站上工作,尝试连接拖放上传以及"浏览"功能。如果您只是转到页面并上传,一切正常。但是,如果您在页面上的UpdatePanel中执行任何活动,则功能会中断。所以,我在我的Page_Load中添加了这个:
' 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 :(得分:0)
所以在尝试了几件事之后,我将这个调用添加到了Sys.WebForms.PageRequestManager,这似乎比在代码隐藏中传递函数名更好。
$(document).ready(function () {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(setupFileUpload);
$('#<%= lblErrorFileType.ClientID %>').css('display', 'none');
setupFileUpload();
});