AsyncFileUpload不会触发服务器端的UploadComplete

时间:2017-07-28 12:54:00

标签: c# asp.net asyncfileupload

我在使用母版页的页面中的更新面板中有一个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的事实有点可疑!

1 个答案:

答案 0 :(得分:0)

我发现UI设计师添加了一个搜索文本框和按钮组合,并将它们包含在&lt; form&gt; ...&lt; / form&gt;中标签;所以第二页&lt; form&gt;标签,一个包含在另一个内(主页面标签和此标签)。这破坏了代码。我意识到,当我发现即使是常规按钮也不会触发其OnClick事件。在我将表单标签更改为div后,一切正常。