我有一个带有updatepanel,脚本管理器和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
更新
我添加了
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是如何工作的?不知道它是什么。
固定!
我通过带有visible = true / false div的单选按钮显示ajax上传框。答案告诉我控件必须在页面加载。我带走了div,一切正常!我现在将通过jquery进行show / hide(我本来应该做的)。
答案 0 :(得分: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
尝试更改表单的enctype:
<form id="form1" enctype="multipart/form-data" runat="server">
答案 1 :(得分:3)
您好,您可以使用OnUploadedComplete="AsyncFileUploadPDF_UploadedComplete"
来完成
在.cs文件中添加
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;
}
答案 2 :(得分:3)
如果这有助于某人,我通过在表单标记中添加以下内容来修复我的问题:
enctype="multipart/form-data" method="post"
答案 3 :(得分:0)
我遇到了同样的问题,阅读并尝试了无数关于如何修复它的帖子(显然很多人都有这个问题)但没有任何效果。在我用ScriptManager
替换ToolkitScriptManager
之前
变化:
<asp:ScriptManager ID="ScriptManager2" runat="server" ></asp:ScriptManager>
使用:
<cc1:ToolkitScriptManager ID="ScriptManager2" runat="Server" />
我不确定这是否是最新工具包(2013年12月)的要求,但它对我有用。希望它也会帮助其他人。