IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Problème FileUpload et Ajax(UpdatePanel)


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Par défaut Problème FileUpload et Ajax(UpdatePanel)
    Bonjour les amis.

    J'ai un problème lors du chargement des fichiers en utilisant le contrôle FileUpload avec l'updatePanel sachant qu'avant d'intégrer l'ajax dans mon application web le contrôle FileUpload marche très bien .

    Lorsque je vérifie dans la base de données je trouve que le fichier ne se charge pas vers la base.


    Est ce que vous avez une idée sur la source du problème ??

    Merci d'avance !

    Cordialement,

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Bonjour,

    Oui : ce comportement est normal.

    Pour des raisons de sécurité, le contrôle FileUpload ne fonctionne pas à l'intérieur d'un UpdatePanel. En effet l'UpdatePanel fait ses requêtes de mis à jour partiel en utilisant XmlHttpRequest et l'on ne peut pas envoyer de fichier via cet objet.

    Ce code rend possible l'utilisation d'un FileUpload à l'intérieur d'un UpdatePanel, pour cela j'ai créer un nouveau contrôle qui hérite de FileUpload ainsi qu'un HttpModule qui modifie directement le flux de la réponse http. On peut utiliser le classique contrôle FileUpload, l'utilisation d'un tagmapping configuré au niveau du web.config remplace le classique FileUpload par mon FileUpload.
    La solution simple sans avoir à tout trifouiller est d'ajouter un postback trigger.

    Qui effectuera un postback non async.

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Août 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 265
    Par défaut
    Effectivement je me suis heurte au meme probleme.

    Voici un exemple simplifie de mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <p>
                Fields marked with '*' are mandatory</p>
            <asp:Label ID="Label1" runat="server" AssociatedControlID="entryTitle">News title:*</asp:Label>
            <asp:TextBox ID="TextBox1" runat="server" />
            <asp:TextBox ID="TextBox2" runat="server" />
            <asp:Label ID="Label2" runat="server" AssociatedControlID="entryAuthor">Posted by:*</asp:Label>
            <asp:TextBox ID="TextBox3" runat="server" />
            <asp:ImageButton OnClick="btnSubmitClick" ImageUrl="~/Images/btn_submit.gif" ID="ImageButton1"
                runat="server" ImageAlign="Middle" />
        </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="btnSubmit" />
        </Triggers>
    </asp:UpdatePanel>

    Je sais qu'il existe une solution avec les iframes pour eviter de faire un postback. Mais je ne l'ai pas developpe par manque de temps, cette solution etant bien plus compliquee.

  4. #4
    Membre averti
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Par défaut
    Bonjour les amis .

    Je vous remercie vivement pour votre aide.
    J'ai testé la solution que vous venez de proposer et elle a bien marché .

    Est ce qu'il y a une solution pour faire la même chose sans recourir à ce PostBack ??

    Larger : vous disiez qu'il y a une solution en utilisant les iframes est ce que vous pouvez encore l'expliquer?

    Je vous remercie encore une fois

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Août 2008
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 265
    Par défaut
    Je n'ai encore jamais teste, je garde ce truc sous le coude pour le jour ou j'aurais le temps de regarder en detail.

    Je crois que ce site et celui-la pourront t'aider.

    Mais je ne peux pas t'en dire plus je ne l'ai pas teste

  6. #6
    Membre averti
    Inscrit en
    Août 2006
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 44
    Par défaut
    Je vous remercie vivement Larger pour votre aide précieuse bien sur c'est un grand départ pour un débutant comme moi

    Je vous remercie encore une fois

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème C# Ajax UpdatePanel et Gridview
    Par radious dans le forum ASP.NET
    Réponses: 3
    Dernier message: 12/01/2012, 07h36
  2. Problème Ajax - UpdatePanel
    Par bliss190 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 02/12/2009, 19h40
  3. Problème XSL avec AJAX
    Par gluc86 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/01/2008, 10h54
  4. [AJAX] Affichage résultat ajax.request quand load page
    Par marcolet.pierre dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/01/2008, 16h27
  5. [AJAX] Autocomplete ajax
    Par jenyfer dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 14/12/2006, 22h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo