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 :

pb asp : valider 2 fois pour retrouver la variable de session


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Points : 47
    Points
    47
    Par défaut pb asp : valider 2 fois pour retrouver la variable de session
    Bonsoir,

    Je vous expose une difficulté rencontrée sur asp.net 4 au niveau de la validation d'une page (méthode 'post').

    L'exemple (vb.net) est simplissime : un Textbox, un bouton, et un label dans lequel je souhaite retrouver la valeur entrée dans le Textbox aprés avoir cliqué sur le bouton.

    Je souhaite utiliser une variable de session (que je stocke au moment du clic et que je récupère au moment du load aprés validation)

    le problème est qu'il faut cliquer DEUX FOIS sur le bouton (et donc valider 2 fois) pour que la variable de session soit enfin reconnue au niveau du load et s'affiche dans le label !!!

    (voici le code asp et le code behind)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <%@ Page Title="Page d'accueil" Language="vb" MasterPageFile="~/Site.Master" AutoEventWireup="true"
        CodeBehind="Default.aspx.vb" Inherits="WebApplication2._Default" %>
     
    <asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
    </asp:Content>
    <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> 
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
            <p>
            <asp:Button ID="Button1" runat="server" Text="Button" />
     </p></asp:Content>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Class _Default
        Inherits System.Web.UI.Page
     
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
                Me.Label1.Text = Session("texte")
         End Sub
     
        Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Session("texte") = Me.TextBox1.Text
        End Sub
    End Class
    Coté configuration web, je n'ai rien imposé pour l'état de session, et donc d'aprés la doc, je devrais avoir un stockage de session par défaut (in proc).

    J'utilise VisualWebDeveloper et asp 4. Le navigateur est IE et le serveur web est le serveur interne à VWD. Le stockage asp est celui donné par défaut par VWD (base = fichier.mdf rangé dans le répertoire App_Data)

    MERCI d'avance pour toute aide

    ....et si j'active le traçage de la page, je confirme qu'aprés le premier clic, je retrouve bien ma variable de session dans la trace (le bon nom avec la bonne valeur) mais elle n'est pas 'vue' par la fonction load :
    Il faut bien faire un second clic pour que le label prenne la valeur attendue....

    Merci encore

  2. #2
    Membre habitué Avatar de Joel Pinto Ribeiro
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 95
    Points : 145
    Points
    145
    Par défaut
    encore un et toujours un probleme lié au cycle de vie d'une page !

    enfaite dans le load tu attribut une valeur qui n'as pas encore été attribué a ta variable de session .

    cycle de vie d'une page :

    LOAD et seulement ensuite l'evenement click.

    Dans ton cas il faudrai que tu ne mette rien dans le load de ta page et que dans l'evenement click tu y mettent ces lignes de codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Session("texte") = Me.TextBox1.Text
     Me.Label1.Text = Session("texte")
    et miracle ça marchera

    Je te laisse te renseigner sur le sujet :

    http://www.google.fr/#sclient=psy&hl...w=1920&bih=995

    De rien
    Jeune ingénieur passionné des technologies Microsoft .NET, ainsi que du partage de connaissances.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Avril 2008
    Messages : 57
    Points : 47
    Points
    47
    Par défaut
    Oups ! Effectivement, j'ai été contaminé par des mois de programmation Access où quand on clique sur un bouton on arrive dans l'évènement clic sans repasser par le load du form !

    Merci pour la rectification...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/11/2011, 20h36
  2. Modifier le PATH une fois pour toute
    Par elitost dans le forum Linux
    Réponses: 8
    Dernier message: 06/09/2009, 13h21
  3. Réponses: 2
    Dernier message: 22/11/2005, 14h06
  4. [RMI] Probleme pour retrouver la classe implementée.
    Par Koko22 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 16/09/2004, 19h15
  5. ASP Validation
    Par pete007 dans le forum ASP
    Réponses: 2
    Dernier message: 11/05/2004, 05h05

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