![](/img/trans.png)
[英]Why does using file upload in a user control with ajax update panel not work?
[英]File Upload doesn't work in a page with Ajax Update Panel
我正在使用c#在ASP.NET 4中使用Ajax文件上载控件。 同一页面上也有一个更新面板,但是上载控件不在更新面板内。 上传控件在更新面板之外。
更新面板上有一个验证码图片和一个提交按钮, 这里也有介绍 。 内部的“提交”按钮包含用于从上传控件保存文件的代码。
问题是,当用户使用上载控件浏览了要上传的文件名,然后输入了错误的验证码值并提交时,新的验证码图像会异步地提供给用户以供输入。 现在,上载控件仍在文件的上载栏中显示路径,但是在编程端它无法检测到文件。
提交按钮代码:
if (AsyncFileUpload.HasFile)
{
// upload logic and other stuff
}
else
{
// lblShow.Text = "There is no file to be uploaded";
}
上面的代码例如执行else部分说“没有文件要上传”。 该页面还没有完全刷新和文件上传控件中显示的文件的路径。 请帮助我解决这个问题。
如果将Ajax更新面板与文件上传控制一起使用,则必须将回发触发器添加到更新面板触发器中。 喜欢:
<Triggers>
<asp:PostBackTrigger ControlID="btnContactSubmit"/>
</Triggers>
如果您的代码:
if (AsyncFileUpload.HasFile)
{
// upload logic and other stuff
}
else
{
// lblShow.Text = "There is no file to be uploaded";
}
在Page_Load
事件中,它将仍然在部分回发的上下文中执行,例如UpdatePanel
刷新。 如果尚未从浏览器执行完整表单提交(您提到文件上传不在UpdatePanel
之外),则页面将不会检测到文件上传。
我感到困惑的是,为什么在UpdatePanel
之外将其称为AsyncFileUpload
?
编辑:
根据您的回答,我认为您的Captcha实现不适用于异步文件上传,因为您现在拥有它。
UpdatePanel会执行异步POST来评估验证码结果,但是您还不会发布文件内容,因为它不在UpdatePanel中。 然后,您的服务器端代码将对验证码结果进行评估,并将返回html或异步响应中的重定向返回浏览器...您最终需要提交表单以获取文件的位置。
除非您准备编写代码以在异步响应中将一些javascript发送回您的页面以触发完整的表单提交,并且再次对表单提交重新评估验证码,否则最好删除UpdatePanel
,在我看来。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.