AsyncFileUpload 不会触发服务器端 UploadComplete

AsyncFileUpload does not fire server side UploadComplete

我在使用母版页的页面的更新面板内有一个 AsyncFileUpload 控件。 当我 select 一个文件时,客户端 OnClientUploadComplete 触发但不是服务器端。我搜索了这个问题并尝试了不同的建议,包括在更新面板外添加一个隐藏按钮,并在客户端脚本上添加 "click" 以强制异步回发,以及修改母版页上的 "form" 标签以包含加密类型但似乎没有任何效果。

在 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 的事实有点可疑!

我发现 UI 设计者添加了搜索文本框和按钮组合,并将它们包含在

...
标签中;所以页面有两个
标签,一个包含在另一个标签中(主页表单标签和这个标签)。这破坏了密码。当我发现即使是普通按钮也不会触发其 OnClick 事件时,我才意识到这一点。在我将表单标签更改为 div 之后,一切正常。