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 :

Bloquer les postback pendant le chargement d'une page


Sujet :

ASP.NET

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2018
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Bloquer les postback pendant le chargement d'une page
    Bonjour tout le monde,

    Je me heurte à un problème de viewstates lorsque je clique sur plusieurs autres actions pendant le chargement d'une page (exemple, j'ouvre un dossier, puis je clique sur d'autres dossiers ensuite, ou tout simplement je spam clique le même). L'appli web sur laquelle je bosse a des onglets qui sont gérés dans un viewState, et en cas de multiples clics lors du chargement, chaque postback génère un nouvel historique de viewStates, et lorsque celui-ci dépasse la limite de l'historique (géré par le code, pas par celui déterminé dans le webconfig), le viewstate du tout premier chargement déclenché n'existe plus et cela entraine des erreurs (la navigation d'onglets ne fonctionne plus)

    Je ne peux pas augmenter l'historique car l'appli est trop gourmande pour en stocker trop, ni refaire les fonctionnalités de l'appli, donc je me demande si je pourrai pas rejeter toute demande de postback si un chargement est déjà entrain d'être effectué, et si oui, comment.

    Merci d'avance pour votre aide

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Je pense que tu prends le probleme a l'envers car il ne me parait pas possible de bloquer des postbacks. Le plus simple serait de mettre en place un overlay qui couvrirait tout ou partie de la page pour empecher les clicks. Une fois que tout est charge, tu enleves l'overlay.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2018
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2018
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    C'est vrai que j'avais déjà pensé à cette idée, mais comment détecter qu'on est déjà en charge ? A quel moment déclencher l'overlay et le retirer ?

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut Syntaxe du jQuery corrigee
    Dans ton cas, je pense que la solution la plus simple est la suivante :

    Tu ajoutes un overlay directement visible sur la page :
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <div id="overlay">
        <img src="spinner.gif" /><br/>
        Chargement en cours...
    </div>
    Ensuite en jQuery tu vas t'abonner a l'evenement "load" qui va se declencher une fois que la page est charge (contenu, frames, images, objets, etc.), et tu vas masquer l'overlay :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $(window).on('load', function () {
        $('#overlay').fadeOut();
    });

    Cherche sur ton moteur de recherche prefere "jquery add overlay while page is loading" et tu trouveras des exemples de CSS pour un overlay.

    Tu peux aussi faire des overlays plus "specifiques" a certaines actions en ajoutant l'overlay lors du click sur un bouton/lien, puis par exemple tu envoies une requete AJAX et lorsque celle-ci est terminee tu masques l'overlay.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. Afficher une boite de dialogue pendant le chargement d'une page
    Par ledisciple dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 30/09/2011, 14h56
  2. bloquer les réaffichages pendant l'execution d'une macro
    Par michelp38 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 03/04/2011, 19h23
  3. Affichage d'une page pendant le chargement d'une page
    Par johnson95 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/08/2008, 14h21
  4. cacher des bouttons pendant le chargement d'une page
    Par jonnyboy dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/10/2007, 13h36
  5. Réponses: 3
    Dernier message: 10/08/2007, 10h32

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