2011-03-24 50 views
5

我有一個帶有updatepanel,腳本管理器和asyncfileupload控件的用戶控件。無法讓AsyncFileUpload在更新面板中工作

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %> 
<asp:ScriptManager ID="ScriptManager2" runat="server" ></asp:ScriptManager> 
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <cc1:AsyncFileUpload ID="AsyncFileUpload2" runat="server" /> 
     <asp:LinkButton id="lbSubmitOrder" runat="server" title="Submit Order Request" class="btn_blue_dynamic_med"/> 
    </ContentTemplate>  
</asp:UpdatePanel> 

在背後說我的代碼:

Dim path As String = Server.MapPath("~/temp/test.tmp") 

AsyncFileUpload2.SaveAs(path) 

在我AsyncFileUpload2對象中的文件名是什麼。我似乎無法獲得應該上傳的文件的引用。

-Nate

UPDATE
我添加

Private Sub AsyncFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles AsyncFileUpload1.UploadedComplete 
    If e.state = AjaxControlToolkit.AsyncFileUploadState.Success Then 
     '....' 
    Else 
     showErrorMessage(e) 
    End If 
End Sub 

我不能在 「if」 語句打一個破發點,我選擇一個文件之後。我想我的頁面上有什麼問題與Ajax如何工作?不知道它是什麼。

固定!
我正在通過單選按鈕顯示ajax上傳框,其中包含visible = true/false div。答案告訴我,控件必須在頁面加載。我拿走了div,一切正常!我現在將通過jquery(我應該首先完成的)完成顯示/隱藏。

回答

8

確保沒有異步加載asyncfileupload控件的usercontrol,例如通過Response.Redirect(「pageWithUploadControl」)。

您是否處理了FileUploadComplete事件並檢查AsyncFileUploadState是否成功?

Private Sub AsyncFileUpload1_UploadedComplete(ByVal sender As Object, ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) Handles AsyncFileUpload1.UploadedComplete 
     If e.state = AjaxControlToolkit.AsyncFileUploadState.Success Then 
      '....' 
     Else 
      showErrorMessage(e) 
     End If 
    End Sub 

    Private Sub showErrorMessage(ByVal e As AjaxControlToolkit.AsyncFileUploadEventArgs) 
     Dim message As String = String.Empty 
     Select Case e.statusMessage 
      Case AjaxControlToolkit.AsyncFileUpload.Constants.Errors.EmptyContentLength 
       message = "Empty content length!" 
      Case AjaxControlToolkit.AsyncFileUpload.Constants.Errors.FileNull 
       message = "Fill NULL!" 
      Case AjaxControlToolkit.AsyncFileUpload.Constants.Errors.InputStreamNull 
       message = "Input Stream NULL!" 
      Case AjaxControlToolkit.AsyncFileUpload.Constants.Errors.NoFileName 
       message = "No File Name!" 
      Case AjaxControlToolkit.AsyncFileUpload.Constants.Errors.NoFiles 
       message = "No Files!" 
     End Select 
     LblMessage.Text = message 
    End Sub 

試圖改變改變你的形式的加密類型:

<form id="form1" enctype="multipart/form-data" runat="server"> 
+0

未達到該中斷點。這是否意味着我的腳本管理器有問題?我不知道如何從這裏進行調試... – Nate 2011-03-24 20:58:39

+0

@Nate:看到我的編輯並嘗試更改表單的enctype。 – 2011-03-24 21:25:06

+0

先生,你可以製作一個C#版本的腳本嗎?我現在面臨同樣的問題。 – 2013-02-20 06:47:40

3

嗨,你可以通過使用的.cs OnUploadedComplete="AsyncFileUploadPDF_UploadedComplete" 做文件添加

protected void AsyncFileUploadPDF_UploadedComplete(object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e) 
     { 
      if (AsyncFileUploadImage.HasFile) 
      { 
       Session["AsyncFileUploadPDF"] = AsyncFileUploadImage; 
      } 
     } 

,你可以得到的數據從任何時候你想要的會議,因爲我得到點擊事件的按鈕

protected void btnSaveParts_Click(object sender, EventArgs e) 
     { 
      AsyncFileUploadPDF = (AsyncFileUpload)Session["AsyncFileUploadPDF"]; 
      PdfFileName = AsyncFileUploadPDF.FileName;   
     } 
+0

這真的很有用。^ _^ – 2013-02-20 07:13:25

+0

文件在哪裏?如何保存文件? – 2013-02-20 08:02:25

3

如果這可以幫助別人,我固定我的問題,通過添加以下到窗體標籤:

enctype="multipart/form-data" method="post" 
0

我有同樣的問題,請閱讀並試圖對如何解決它無數的帖子(顯然是一個很多人都有這個問題),但沒有任何工作。

<asp:ScriptManager ID="ScriptManager2" runat="server" ></asp:ScriptManager> 

有:直到我與ToolkitScriptManager
更改取代了ScriptManager

<cc1:ToolkitScriptManager ID="ScriptManager2" runat="Server" /> 

我不知道這是否是最新的工具包的要求(2013年12月),但它工作了我。希望它也能幫助別人。