none
ASP VB.NET empêcher le postback? RRS feed

  • Discussion générale

  • Bonjour,

     

    Je suis actuellement entrain de développer au seins de mon stage un activeX qui permet d'uploader certains fichiers sur un serveur.

    Cette activeX est intégrer dans une page web asp.net. Je désire executer la commande qui permet l'upload des fichiers en appuyant sur un bouton de la page. Le problème est que lorsque j'execute la fonction qui est liée au bouton coté serveur , cela recharge la page et l'upload n'a pas le temps de ce finir. Je voulais savoir si il était possible d'empêcher le postback sur le bouton pour ne pas recharger la page.

    Merci d'avance,

    Cordialement.

    lundi 1 août 2011 08:46

Toutes les réponses

  • Bonjour,

    si vous ne souhaitez pas effectuer de postback, vous pouvez utiliser un bouton "Html" (présent dans la barre d'outil) à la place d'un bouton asp.Net.

    Cordialement

    lundi 1 août 2011 09:57
    Modérateur
  • Le problème est que j'aimerais exécuté le code côté serveur déclenché par l'action du bouton et ensuite lancer le javascript correspondant qui permet d'exécuter l'upload de l'activeX. J'utilise également un évènement envoyé par l'activeX qui est catché par le javascript pour savoir quand est terminée l'upload.

    Pour clarifier la chose , je peut pas utiliser simplement de bouton html par soussis de charte graphique car la page que je suis entrain de modifier fait parti d'un énorme projet ou je ne fait qu'implémenter une nouvelle fonctionnalitée et les boutons déjà présent ont un aspect propre au site.

    lundi 1 août 2011 12:26
  • Si vous souhaitez exécuter du code côté serveur après le click sur le bouton, dans ce cas il vous faut bien un postback. Pour exécuter le code javascript après avoir exécuter le code côté serveur vous pourriez ajouter le code javascript à exécuter dans l'event click de votre bouton en utilisant utiliser la méthode RegisterClientScriptBlock pour ajouter du script dans votre page "dynamiquement".

    Par contre, je ne vois pas bien en quoi la charte graphique pose problème : asp.net ou pas le navigateur ne connait que l'html/css/javascript et vous devriez pouvoir donner le même look.

    Cordialement

    lundi 1 août 2011 12:41
    Modérateur
  • Donc pour faire simple, j'aimerais procéder comme suit:

     

    •  appuyer sur le bouton d'upload 
    •  executer le code coté serveur liée au bouton qui execute certains actions necessaire sur la bdd
    •  executer le code JavaScript à partir du code coté serveur 

     

     

    If (ClientScript.IsStartupScriptRegistered("callTest") = False) Then
    
    
    
                    Dim strScript As String = "<script language=JavaScript id=myClientScript>UploadActiveX();</script>"
    
                    Page.RegisterStartupScript("callTest", strScript)
    
    
    
     End If
    

    • empêcher le postback à la fin de l’exécution de la fonction liée au bouton coté serveur pour permettre l'upload complet
    • catché la fin de l'upload dans le javascript et faire une redirection sur une autre page

     

     

    lundi 1 août 2011 12:42
  • Ok pour les étapes 1, 2 et 3 ( préférer néanmoins ClientScriptManager.RegisterStartupScript car la méthode sur l'objet Page est obsolète ).

    Par contre je ne comprends pas le problème de l'étape 4:

    - à l'étape 3 vous avez ajouter l'appel au script UploadActiveX(). Quand la page se chargera, ce script sera appelé. Le traitement côté serveur est donc terminé et il n'est plus question de postback lié au bouton mais uniquement du code au sein de la fonction UploadActiveX(). Qu'entendez vous par upload complet ? quel problème rencontrez vous avec la fonction UploadActiveX() ?

    Cordialement

    lundi 1 août 2011 15:27
    Modérateur
  • Bonjour,

    Pour l'instant, je proposerai qq chose comme :
    - on clique sur un bouton HTML sans postback ce qui démarre le téléchargement entièrement géré par le contrôle ActiveX
    - c'est le contrôle ActiveX qui envoie une requête HTTP vers le serveur pour déclencher je ne sais quel traitement au niveau de la BD
    - c'est lui aussi qui sait quand le téléchargement est fini par quoi continuer

    J'ai l'impression pour l'instant que l'on essaie d'exécuter qq chose sur le serveur via un postback ce qui détruit le contexte sur le client avant de relancer l'opération de téléchargement (mais on repart à zéro car on a récupéré une nouvelle page HTML).

    Ou éventuellement un appel AJAX qui enchainerait l'appel vers le serveur (sans réafficher la page) puis l'appel de UploadActiveX qui j'imagine procède à l'envoi des fichiers ?

    En gros si je comprends bien on veut appeler le serveur car un traitement est nécessaire mais sans détruite la page HTML donc l'appel aura lieu soit par le contrôle ActiveX soit par un appel Ajax.

     

     


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".
    lundi 1 août 2011 16:54
    Modérateur
  • Oui c'est bien cela , j'aimerais garder la page html intact sans rechargement afin de devoir réaliser certaines préconditions à partir du vb.net coté serveur et ensuite lancé le javascript qui execute l'upload sachant que lorsque j'execute la methode de l'activeX elle rend la main aussitot car elle utilise un thread qui execute en tâche de fond le traitement.

    Donc je vais tester l'ajax et voir comment il pourrait me servir. Merci de votre aide ^^

    mardi 2 août 2011 07:37
  • Bonjour, Maxime,

    Est-ce que vous avez pu avancer avec l’Ajax pour résoudre votre problème ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

     

    Cordialement,

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    jeudi 4 août 2011 08:21