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 Ajax Discussion :

AJAX - Rafraichissement partiel


Sujet :

ASP.NET Ajax

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 25
    Points : 25
    Points
    25
    Par défaut AJAX - Rafraichissement partiel
    Bonjour,

    Actuellement en train de monter un petit site internet (C#-aspx), je me pose moultes questions quant au système que je viens de mettre en place . Est-il correct ?

    Je vais essayer de m'expliquer au mieux au travers d'une explication concrète.

    En gros, j'ai une page qui s'appel Default.aspx. Celle-ci sert de template au site. A l'intérieur de cette page j'ai un lien sur Home.aspx. Lors d'un clique sur Home, la page Home.aspx s'affiche à l'intérieur de ma page Default.aspx dans
    un <div id="resultat"> réservé à cet effet. Pour cela j'utiliser HTTPREQUEST.

    De plus, je vérifie, via une variable de session, que l'utilisateur arrive sur la page Home.aspx via Default.aspx :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Vérifier que l'utilisateur arrive sur cette page depuis la page Default.aspx
            if ((string)Session["FromMain"] != "YES")
            {
                Response.Redirect("~/Default.aspx");
            }
    Bref, tout ça fonctionne correctement. Si j'ai procédé ainsi, c'est purement par esthétisme, dans le seul but que l'écran fasse des rafraîchissement partiel et ainsi éviter des effets de 'clipping'.

    Ce concept est-il correct selon vous? Le référencement se fera-t-il correctement? Ou serai-je confronté à des soucis quelconques pour la suite?

    A la base, j'avais tenté d'utiliser une MasterPage + AJAX. Ca focntionne, mais sans succès pour le rafraîchissement partiel, je dois certainement me planter sur qqchose . Voici un bref exemple :

    MasterPAGE.ASPX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <body>
        <form id="form1" runat="server">
        <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="Home.aspx">Home</asp:HyperLink>
     
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server" />
            <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
     
            </asp:ContentPlaceHolder>
        </div>
     
        </form>
    </body>
    HOME.ASPX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
        HOME
    </asp:Content>

    Alors voilà, j'espère que quelqu'un pourra m'aider et m'indiquer si ma solution est viable. Ou, encore mieux, m'expliquer comment faire fonctionner MasterPage+AJAX.

    D'avance, merci pour votre aide très précieuse.

    Chris

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Salut,

    Tout d'abord, tu ne dispose pas d'UpdatePanel dans ta WebForm, ce qui est requis pour avoir un rafraîchissement partiel.

    Ensuite, le contrôle Hyperlink ne représente en réalité qu'un lien. Pour faire un rafraichissement partiel il faut un contrôle qui effectue des Postback (IPostbackHandler) comme un Button, un LinkButton, ... Il faudrait donc le remplacer pour faire de la sorte.

    Le problème de fonctionner avec ton div, c'est qu'il t'impose de passer par défault.aspx et donc cré un dépendance vis à vis de cette page : tu seras obligé de mettre ce code sur chaque page. En plus, si un utilisateur souhaite accéder à un page en favoris par exemple, il ne pourra pas, car il sera redirigé vers default.aspx.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Merci pour ta réponse.

    A la lumière de ce que tu m'as dit, j'ai essayé de partir sur la solution MasterPage-ScriptManager-UpdatePanel, hélas sans succès, il doit encore me manquer qqchose. Comme un bout de code vaut mieux que de longs discours, voici ce que j'ai essayé :

    MASTERPAGE.ASPX
    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
    <body>
        <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
     
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <br />
            <asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="Home.aspx">Home</asp:LinkButton>
            <asp:LinkButton ID="LinkButton2" runat="server" PostBackUrl="Pres.aspx">Prés</asp:LinkButton>
     
                <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
     
                </asp:contentplaceholder>
     
        </form>
    </body>
    HOME.ASPX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <ContentTemplate>
               Home Contenu
            </ContentTemplate>
        </asp:UpdatePanel>
    </asp:Content>
    PRES.ASPX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
      <asp:UpdatePanel ID="UpdatePanel1" runat="server">
         <ContentTemplate>
              Prés Contenu
         </ContentTemplate>
      </asp:UpdatePanel>
    </asp:Content>
    D'avance un grand merci

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    826
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2006
    Messages : 826
    Points : 1 120
    Points
    1 120
    Par défaut
    Oui en effet, il manque quelque chose.

    Premier point, tu as bien utiliser des LinkButton mais par contre de la mauvaise méthode. En effet, le PostBackUrl est comme une "astuce" et n'effectue pas vraiment de postback, c'est juste une adresse sur laquelle est posté la page.
    Pour l'UpdatePanel il faut très grossièrement un évènement dans le codebehind.

    L'UpdatePanel fait un rafraichissement partiel soit en fonction de ses Contrôles Web internes soit en fonction d'autres contrôles web externes.
    Quelques exemples :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     <asp:Button ID="btnTest" Text="Mon Button" runat="server" />
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:UpdatePanel ID="pnl" runat="server">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="btnTest" EventName="Click" />
            </Triggers>
            <ContentTemplate>
                <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                </asp:ContentPlaceHolder>
            </ContentTemplate>
        </asp:UpdatePanel>
    ou encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <asp:ScriptManager ID="ScriptManager1" runat="server" />
        <asp:UpdatePanel ID="pnl" runat="server">
            <ContentTemplate>
                <asp:Button ID="btnTest" Text="Mon Button" runat="server" />
                <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
                </asp:ContentPlaceHolder>
            </ContentTemplate>
        </asp:UpdatePanel>
    après il est aussi possible de faire la mise à jour de l'updatepanel à la main

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2009
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Tout d'abord, merci pour votre aide et vos réponses, celles-ci m'ont permises de mieux appréhender mon souci.

    Hélas, je suis une vraie souche en matière d'Ajax et MasterPage...et je n'arrive toujours pas à ce que je recherche. QQ'un peut-il, concrètement, me dire ce que je fais de faux.

    A ce que je comprends, quand je clique sur mon bouton LinkButton1, je ne devrait pas faire un PostBackUrl, mais insérer du code dans l'événement lié..mais lequel ?

    protected void LinkButton1_Click(object sender, EventArgs e)
    {
    ICI ?
    }

    Voilà mon pourrite code actuel. Si j'exécute Home.aspx et que j'insère une valeur dans ma textbox, j'aimerai que lorsque je clique sur le link Prés, la page Prés.aspx s'affiche tout en conservant la valeur préalablement insérée dans la textbox...bref, un partail refresh quoi (actuellement cette valeur se met à vide)

    Merci pour votre aide.

    MASTERPAGE.ASPX
    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
    17
    18
    19
    20
    21
    22
     
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <br />
            <asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="~/Home.aspx">Home</asp:LinkButton>
            <br />
            <asp:LinkButton ID="LinkButton2" runat="server" PostBackUrl="~/Presentation.aspx">Prés</asp:LinkButton>
     
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
     
            <asp:UpdatePanel id="UpdatePanel1" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <asp:contentplaceholder id="ContentPlaceHolder1" runat="server">
                    </asp:contentplaceholder>
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
        </form>
    </body>

    HOME.ASPX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
       HOME
    </asp:Content>
    PRES.ASPX
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
       Prés
    </asp:Content>

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

Discussions similaires

  1. [AJAX] - Rafraichissement d'un DIV avec setTimeOut
    Par Seb06 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/03/2011, 00h07
  2. [AJAX] Rafraichissement d'un fichier texte inclu dans une page
    Par gforce dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 09/01/2007, 11h41
  3. [AJAX] rafraichissement d'un Div en Ajax
    Par Azanael dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/05/2006, 15h06
  4. [AJAX] Rafraichissement des données sur la page
    Par TreizeSegments dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/05/2006, 18h32
  5. ajax,rafraichissement avec une liste deroulante
    Par klimero dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 25/04/2006, 09h41

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