返回首页

{A}简介
AJAX是一个ASP.NET开发的伟大的事情。它已开始水平与丰富的客户端应用程序的公平竞争环境,在用户体验和响应方面。一个缺点是,曾经工作过的很多东西都是折断;包括FileUpload控件。
问题的实质是FileUpload控件不与异步回发,因此,不从一个AJAX的UpdatePanel内的工作。本文中介绍的技术可以让FileUpload控件,一个UpdatePanel内,迫使一个完整的回传,然而,其余的控制仍然可以采取的UpdatePanel提供异步回发的优势。该示例应用程序将是一个简单的Web窗体包含一个,标签和一个FileUpload。我们将看到的文件上传功能通过一个完整的回传的,但DatePicker的将保留它的AJAX行为。1。创建一个新的支持AJAX的Web项目
当微软AJAX安装到Visual Studio,ASP.NET AJAX的网站,它增加了一个新的模板。创建一个新的这些:
{S0} 创建一个新的Web表单
在这个例子中,我添加了一个,标签,和一个FileUpload控件,一个UpdatePanel内所有:

代码隐藏:{C}
这是我们遇到的问题,在这一点上。运行形式,你会发现文件上传控件无法正常工作。因为文件上传控件是一个UpdatePanel内,该文件是不会发送到服务器。3。启用文件上传完全回发
前面提到的,关键是要强制文件上传控件执行一个完整的回传,我们这样做使用触发器。触发器允许开发人员指定将导致部分或全部回传。在UpdatePanel的ContentTemplate以外但他们必须定义。我们要创建一个触发器,它会指示按钮,我们上传使用,以执行一个完整的回传。更新后的标记是:

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="conditional">

 <Triggers>

  <asp:PostBackTrigger ControlID="Button1" />

 </Triggers>

 <ContentTemplate>

  <ews:DatePicker ID="DatePicker1" runat="server" UsingUpdatePanel="True" 

                  OnSelectionChanged="DatePicker1_SelectionChanged" /><br />

  <asp:Label ID="Label1" runat="server"></asp:Label><br /><br />

  <asp:FileUpload ID="FileUpload1" runat="server" />

  <asp:Button ID="Button1" runat="server" Text="Upload" OnClick="Button1_Click" />

 </ContentTemplate>

</asp:UpdatePanel>

现在,运行表单时,DatePicker的仍然是工作异步,但文件上传也是工作,感谢的PostBackTrigger。| liammclennan

回答

评论会员:游客 时间:2011/12/07
我第一次按一下我的保存按钮,PostedFile属性不包含任何数据。随后的回传,似乎工作虽然。我缺少的东西
?basheer971
评论会员:大文章 时间:2011/12/07
zhangtai
评论会员:游客 时间:2011/12/07
非常好,U救了我!!由于男子
!拉克什米Narsaiah
评论会员:解决方案容易 时间:2011/12/07
ricpue
评论会员:游客 时间:2011/12/07
伟大的文章中,我被这个问题放养
!saqib666
评论会员:游客 时间:2011/12/07
我面临同样的问题,文件上传是不使用UpdatePanel,但看完这篇文章后,问题就解决了​​。感谢
会员4408548
评论会员:游客 时间:2011/12/07
加入触发后它不是为我工作。我在解决方案资源管理器中右击。aspx页面上点击"生成"页。"这似乎做的伎俩。的文章
!deepak_int
评论会员:游客 时间:2011/12/07
使用回传触发解决问题的文件上传控件不能正常工作,但在同一页上使用UpdateProgress控制IM,所以,当我使用回发触发的UpdateProgress面板不显示。任何人都可以建议亲切问候迪帕克夏尔马软件工程师|会员4313257
!!我也有这个问题
:
任何人都可以给手
评论会员:托马斯马乌莱 时间:2011/12/07
?我刚刚发现的文件上传和PostBackTrigger文章 - 我发现自己与上述相同的问题...的UpdateProgress不开火。我错过的东西吗?没有人解决这个问题尚未
评论会员:?托马斯马乌莱 时间:2011/12/07
好吧,如果你仍然有兴趣在这里遐去...

我添加了这个按钮的OnClientClick事件,我用火上传。

LT; ASP:按钮的ID ="UploadButton"RUNAT ="服务器"高度="20像素"文本="上传"
这部分的代码将发生变化,这取决于如何放置在您的控制。矿是一个Web用户控件的默认页面下降。 "ctl00_ContentPlaceHolder1_ImageControl1_UpdateProgress"
评论会员:会员3530203 时间:2011/12/07
喜托马斯,
我要呼叫按钮的OnClientClick事件,伴随着这种风格显示code.So一些验证时,我只使用follwing代码做工精细的OnClientClick =的javascript:('ID')style.display ="块"
但是,当我还呼吁一起验证功能,它不工作
。的OnClientClick ="JAVASCRIPT的document.getElementById('ID')style.display ="块";验证();"{ BR}
感谢
评论会员:。Shweta帕瑞克 时间:2011/12/07
您好

在我的应用程序使用ND(这是使用母版页)在页面的母版页的IM IM加载我的ascx控件。

在我的IM使用ascx控件的文件上传控制。

我在我的aspx页面的更新面板。

但是当我调试我的应用程序,我总是得到hasfile = FALSE

我也试过把我的ASCX ND设置触发另一个更新面板。

不能被发现,但现在在这个时候我的控制是在aspx页面加载时,我得到一个错误控制与ID btn2

我不knw如何处理这个问题。

任何人都可以帮助我吗?
thanx提前

shweta
评论会员:danny_pow 时间:2011/12/07
不解决问题

评论会员:ji_vijay 时间:2011/12/07
您好,

我没有使用过任何文件上传控制在我的项目。但我已经使用更新面板内的列表框。当我主机服务器我的项目,我得到了这个错误..

Sys.WebForms.PageRequestManagerServerErrorException:一个未知的错误发生在处理服务器上的要求。从服务器返回的状态码:0

PLS人帮助我..

感谢问候,
VijayG
评论会员:liammclennan 时间:2011/12/07
,请不要发表无关的问题



利亚姆麦克伦南
liam@eclipsewebsolutions.com.au www.eclipsewebsolutions.com.au
评论会员:会员4461433 时间:2011/12/07
您好,感谢您的代码,工作对我来说第一次
!干杯队友
评论会员:!ph81 时间:2011/12/07
有时解决方案不起作用,除非ü把
Page.Form.Enctype =的"multipart / form - data的",
在UserControl的Load函数
评论会员:。gezequiel09 时间:2011/12/07
大!我现在都不是什么
Page.Form.Enctype =的"multipart / form - data的",
但对我的作品真的罚款... ... {S2}
评论会员:shogedal 时间:2011/12/07
致谢!在周围的更新面板与嵌套的母版页的情况,这为我做! {S3}我几乎去螺母
评论会员:!ab_dc 时间:2011/12/07
打招呼,它仍然不回传,如何无刷新上传所有的页面??感谢很多提前
评论会员:。liammclennan 时间:2011/12/07
这篇文章是关于获取文件上传工作在MS AJAX更新面板。我不知道如何做一个Ajax上传。也许jQuery可以帮助吗?

利亚姆麦克伦南
liam@eclipsewebsolutions.com.au www.eclipsewebsolutions.com.au
评论会员:Portatofe 时间:2011/12/07
很好的问题

{A5}
评论会员:Zinkyu 时间:2011/12/07
这里的要点是,FileUpload控件本身不是一个Ajax面板内的功能,而不会造成整页回发。因此,AJAX并不适用于文件上传控件本身。它的页面上的其他控制

然而,进一步阅读,揭示这是JavaScript的一个更限制比限制。NET。据ajaxf1.com [{A6}],它的安全限制。他们建议"IFRAME"战略(包括上载目标的IFRAME),它的工作。就个人而言,我尝试摆脱iframe的可能时
评论会员:。HendrikO 时间:2011/12/07
感谢这提示你。