Permettre l'upload de fichier dans un UpdatePanel
Par Wookai le jeudi 8 novembre 2007, 14:37 - Code - Lien permanent
Il arrive souvent en ASP.Net d'inclure toute sa page dans un UpdatePanel, ce qui a pour effet de rendre asynchrone le fonctionnement de celle-ci. Cependant, si vous mettez un champ FileUpload (l'équivalent en ASP.Net du <input type="file">) dans un UpdatePanel, vous vous retrouverez avec une taille de 0 byte lors du traitement du postback.
La raison est que l'UpdatePanel fait les requêtes directement en asynchrone et de manière transparent, sans passer par un POST normal, et n'upload pas les fichiers. Pour que votre FileUpload fonctionne dans un UpdatePanel, il suffit d'ajouter un trigger à ce dernier, lui indiquant d'effectuer un POST normal lorsque le formulaire contenant votre fichier est soumis.
Par exemple, si votre UpdatePanel est dans la Master Page et que votre FileUpload se trouve dans un FormView, voici comment ajouter le trigger en C# :
UpdatePanel panel = (UpdatePanel)Page.Master.FindControl("__myUpdatePanel");
PostBackTrigger trigger = new PostBackTrigger();
trigger.ControlID = this.__myFormView.UniqueID;
panel.Triggers.Add(trigger);
Commentaires