AsyncFileUpload完成上传后调用服务器端功能

时间:2011-12-13 18:50:42

标签: asp.net vb.net

我不知道为什么在OnUploadedComplete内调用另一个函数不能正常工作,这是我的代码:
ASP.NET代码:

<asp:AsyncFileUpload ID="AsyncFileUpload1" runat="server" 
                OnUploadedComplete ="UploadFile1" 
                OnClientUploadComplete="uploadComplete" ThrobberID="myThrobber" 
                onclientuploaderror="uploadError" CompleteBackColor="White" />

VB.NET代码:

Protected Sub UploadFile1(ByVal sender As Object, ByVal e As System.EventArgs)
    'saveing file on disk, this part works fine, but calling 
    'myfunction() does not work properly
    myfunction()
End Sub

Sub myfunction()
    mylabel.Text="done" 'this does not work
    insert_records_to_db() 'this works
End Sub

2 个答案:

答案 0 :(得分:4)

这是因为AsyncFileUpload-Control在IFrame中呈现(通常由于安全原因,FileUpload只能在完全回发时使用),因此它没有UpdatePanels的正常行为。

您可以通过处理客户端OnClientUploadComplete来触发它,以触发导致异步回发的隐藏按钮。

OnClientUploadComplete="uploadComplete"

function uploadComplete() {
   $get("<%=btnShowUploadResult.ClientID %>").click();
}

<asp:Button ID="btnShowUploadResult" runat="server" CausesValidation="false" Text="hidden" Style="display: none" />

您可以将邮件存储在服务器端OnUploadedComplete中的Session变量中,并在btnShowUploadResult.Click处理程序中读取它。

答案 1 :(得分:1)

我认为这是由于AsyncFileUpload控件的工作原理,请参阅this以获取更多信息。

难道你不能只使用客户端javascript函数来更改标签文本吗?