ASP.NET Ajax中的UpdatePanel和asp.net中FileUpload控件是不兼容的,但是采用下面的方法,可以在ASP.NET+Ajax下实现文件上传
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<Triggers>
<asp:PostBackTrigger ControlID="btnUpload" />
</Triggers>
<ContentTemplate>
<ContentTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" Width="400px" />
<asp:Button ID="btnUpload" runat="server" Text="上传" OnClick="btnUpload_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</asp:UpdatePanel>
把提交上传文件的按钮放在<Triggers>标签内,而不放在<ContentTemplate>中,特别注意把UpdateMode设为Conditional。然后在btnUpload_Click方法中执行保存文件和写入数据库的操作。当然这样做,上传文件时就失去了异步交互的效果,但是,在执行其它操作的时候,都还是有Ajax特性的。另外,如果您的这个上传文件的页面使用了一个母版页,并且在母版页中有一个UpdatePanel,在母版页中对子页的控件加上<Triggers>是不行的,还好,UpdatePanel是可以嵌套的。