Julien Pinquié

ASP.NET, C#, SQL Server, Windows Live

Comportement du FileUpload dans un contrôle Ajax UpdatePanel

Il existe une subtilité dans l'utilisation d'un FileUpload placé dans un contrôle UpdatePanel. Pour des raisons de sécurité, la configuration suivante ne fonctionnera pas.

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
   <ContentTemplate>
      <asp:FileUpload ID="FileUpload1" runat="server" /> 
      <asp:Button ID="btnSend" runat="server" Text="Update"
           onclick="btnSend_Click" />
   </ContentTemplate>
</asp:UpdatePanel>

La propriété HasFile est égale à False.

if (FileUpload1.HasFile)
{
   ...
}

Le téléchargement de fichier nécessite un PostBack complet de la page, alors qu’un UpdatePanel fait ses requêtes de mise à jour partielle en utilisant l'objet XmlHttpRequest.

La solution consiste tout simplement à ajouter un PostBackTrigger sur le bouton qui exécute le téléchargement.

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    ...
   <Triggers
      <asp:PostBackTrigger ControlID="btnSend" /> 
   </Triggers>
</asp:UpdatePanel>

Posted: May 18 2009, 10:43 AM by jpinquie | with no comments
Filed under: ,

Comments

No Comments

Leave a Comment

(required) 

(required) 

(optional)

(required)