{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