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 :

Response.Redirect vs UserControl


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut Response.Redirect vs UserControl
    Bonjour à tous!

    J'ai des difficultés avec la combinaison UserControl et Response.Redirect.
    Contrairement à moult sujets vus sur le net, je n'essaie pas d'utiliser un Response.Redirect dans le code-behind de l'UC.

    Notez que ceci s'inscrit dans le cadre de l'utilisation de la bibliothèque iUI.

    Pour commencer, voilà mon code aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <body>
    <ul id="home" title="Menu principal" selected ="true">
        <li><a id="menuMonitoring1" runat="server" onserverclick="monitoring1_Click">Monitoring1</a></li>
    </ul>
     
    <ul id="monitoring1" title="Monitoring1" runat="server">
        <asp:placeHolder ID="ucEvent" runat ="server" />
    </ul>
    </body>
    Et le code behind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    protected void monitoring1_Click(object sender, EventArgs e)
    {
        if (ucEvent.Controls.Count == 0)             //Si c'est la première fois que l'on clique sur le <ul>
           {
                monitoring1_AfficherListe();            //Fonction générant les UserControls dans un PlaceHolder à partir d'une base de données
           }
        Response.Redirect("Monitor.aspx#_monitoring1", false);    //Redirection vers la balise UL contenant mon PlaceHolder
    }
    Chronologie des événements :
    1. Passage dans la fonction monitoring1_AfficherListe()
    2. Execution du Response.Redirect
    3. Sortie de la méthode
    4. Création des UserControls (on passe dans le ascx correspondant)


    Et là, dans mon navigateur, rien. Aucun UserControl à l'écran, ni dans le code source de la page.

    Or, si j'éxecute le même code, mais sans Response.Redirect, et que j'affiche manuellement grâce à l'URL de la page mon <ul>, j'ai tous mes UserControls.

    Le problème a environ 100% de chances de provenir du Response.Redirect, mais je ne vois pas comment régler ou contourner ce problème.

    Auriez vous des idées?

    J'éspère avoir été clair et complet pour mon premier post, si vous avez besoin de clarification, n'hésitez pas!

    Merci!

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Quand tu fais un response.redirect, tu recrées une nouvelle instance de ta page et donc tu perds tous les contrôles que tu as ajouté.
    Essaye de gérer le scroll de ta page en javascript

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut Solution
    Merci pour ta réponse, lutecefalco. Mais ce n'est pas le scroll de ma page que je devais ajuster, mais l'ancre utilisée.

    Je pensais déjà au Javascript, mais je cherchais une solution alternative, pour ne pas surcharger le code.

    Voilà donc comment j'ai procédé, pour ceux qui rencontrent le même problème :
    Dans le Head de mon aspx :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      <script type="text/javascript">
        function Rafraichir(ancre)
        {
              document.location.replace('#_' + ancre);
        }
      </script>
    Dans mon code behind :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    protected void monitoring1_Click(object sender, EventArgs e)
            {
                if (ucEvent.Controls.Count == 0)
                {
                    monitoring1_AfficherListe();
                }
               ClientScript.RegisterStartupScript(GetType(), "osef", "<script>Rafraichir('monitoring1')</script>");
            }
    Ce n'est pas forcément la meilleure solution, mais elle fonctionne!

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

Discussions similaires

  1. Faire Response.redirect vers un signet d'une page
    Par requiemforadream dans le forum ASP
    Réponses: 3
    Dernier message: 22/04/2005, 14h59
  2. Response.redirect() avec ancre nomée
    Par roots_man dans le forum ASP
    Réponses: 4
    Dernier message: 23/11/2004, 10h37
  3. probleme avec Response.Redirect
    Par nicerico dans le forum ASP
    Réponses: 2
    Dernier message: 06/08/2004, 16h21
  4. problème de response.redirect
    Par boucher_emilie dans le forum ASP
    Réponses: 5
    Dernier message: 06/07/2004, 10h10
  5. Réponses: 3
    Dernier message: 17/06/2004, 16h32

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