我在使用母版页的页面中的更新面板中有一个AsyncFileUpload控件。 当我选择一个文件时,客户端OnClientUploadComplete将触发,但不会触发服务器端。我搜索了这个问题并尝试了不同的建议,包括在更新面板外添加一个隐藏按钮和"点击"它在客户端脚本上强制执行异步回发以及修改"表单"母版页上的标记包含加密类型但似乎没有任何效果。
在aspx文件中我有:
<script type="text/javascript">
function onClientUploadComplete(sender, e) {debugger
var ct = e.get_contentType();
var fn = e.get_fileName();
var l = e.get_length();
var p = e.get_path();
document.getElementById('uploadCompleteInfo').innerHTML = '';
__doPostBack('upnlNews', '');
}
function onClientUploadStart(sender, e) {
document.getElementById('uploadCompleteInfo').innerHTML = 'Please wait while uploading ' + e._fileName;
}
</script>
<asp:UpdatePanel runat="server" ID="upnlNews">
<ContentTemplate>
<ajaxToolkit:AsyncFileUpload runat="server" ID="fuAttchedDocs"
ThrobberID="myThrobber"
UploaderStyle="Traditional"
OnClientUploadComplete="onClientUploadComplete"
onuploadedcomplete="fuAttchedDocs_UploadedComplete"
onuploadedfileerror="fuAttchedDocs_UploadedFileError" />
<asp:Label runat="server" ID="myThrobber" Style="display: none;">
<img align="middle" alt="" src="../assets/images/6.gif" />
</asp:Label>
<div id="uploadCompleteInfo"></div><br />
</ContentTemplate>
</asp:UpdatePanel>
其他信息 当我在客户端脚本中放置断点并检查Chrome Developer Tool中的变量时,我看到以下内容:
function onClientUploadComplete(sender, e) {debugger
var ct = e.get_contentType(); ==> ct = ""
var fn = e.get_fileName(); ==> fn = "spock.jpg"
var l = e.get_length(); ==> l = "NaN"
var p = e.get_path(); ==> p = "C:\fakepath\spock.jpg"
document.getElementById('uploadCompleteInfo').innerHTML = '';
__doPostBack('upnlNews', '');
}
文件长度显示为NaN的事实有点可疑!
答案 0 :(得分:0)
我发现UI设计师添加了一个搜索文本框和按钮组合,并将它们包含在&lt; form&gt; ...&lt; / form&gt;中标签;所以第二页&lt; form&gt;标签,一个包含在另一个内(主页面标签和此标签)。这破坏了代码。我意识到,当我发现即使是常规按钮也不会触发其OnClick事件。在我将表单标签更改为div后,一切正常。