2011-03-24 46 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月),但它工作了我。希望它也能帮助别人。