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 :

Transformation C# -> VB


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 7
    Par défaut Transformation C# -> VB
    Bonjour à tous.
    Je deviens fou : Dans le but de distinguer un rafraichissement d'une page, j'utilise ceci en C#:
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    using System;
    using System.Collections.Generic;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
     
    public partial class _Default : System.Web.UI.Page 
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session["CheckRefresh"] =
                Server.UrlDecode(System.DateTime.Now.ToString());
            }
     
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (Session["CheckRefresh"].ToString() ==
    ViewState["CheckRefresh"].ToString())
            {
                Label1.Text = "Hello";
                Session["CheckRefresh"] =
                Server.UrlDecode(System.DateTime.Now.ToString());
            }
            else
            {
                Label1.Text = "Page Refreshed";
            }
     
        }
        protected void Page_PreRender(object sender, EventArgs e)
        {
            ViewState["CheckRefresh"] = Session["CheckRefresh"];
        }
     
    }
    Ca fonctionne très bien.

    Maintenant, je ne suis pas un pro du C# (et pro tout court), et j'utilise le VB...

    Donc je transforme en :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    Imports System
    Imports System.Collections.Generic
    Imports System.Web
    Imports System.Web.UI
    Imports System.Web.UI.WebControls
    Partial Class _Default
        Inherits System.Web.UI.Page
     
        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
     
     
            If Not IsPostBack Then
                Session("CheckRefresh") = Server.UrlDecode(System.DateTime.Now.ToString())
            End If
     
        End Sub
     
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            If Session("CheckRefresh").ToString() = ViewState("CheckRefresh").ToString() Then
     
                Label1.Text = "Hello"
     
                Session("CheckRefresh") = Server.UrlDecode(System.DateTime.Now.ToString())
     
            Else
     
                Label1.Text = "Page Refreshed"
            End If
        End Sub
     
     
     
     
        Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
            ViewState("CheckRefresh") = Session("CheckRefresh")
        End Sub
    End Class
    A moins de devoir aller consulter l'ophtalmo, les deux codes sont équivalents?

    le fichier aspx est identique (mis à part la déclaration du langage), et pourtant:

    La page en C# fonctionne parfaitement, quand j'appuye sur F5 le label prend bien la valeur "Page Refreshed" et quand je clique sur le bouton, "Hello"

    La page en VB a un comportement différent:

    F5 déclenche bien "Page Refreshed", mais le click sur le bouton déclenche aussi "Page Refreshed"... dans 8 cas sur 10

    En effet, de temps en temps, quand je clique sur le bouton de la page en VB, elle me répond "Hello"

    Bref je sèche...

  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
    Je suis pas sûr de comprendre, mais ça n'est pas juste ça que tu veux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            
             If Not IsPostBack Then
                 Label1.Text = "Page Refreshed"
              Else
                Label1.Text = "Hello"
            End If

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 7
    Par défaut Edit:
    bonjour lutecefalco,

    Non ce n'est pas ce je désire...

    En gros, je veux éviter les doubles post par rafraichissement de la page, autrement que par vérification des doublons avant insertion dans une bdd.

    En page 1 j'ai un formulaire qui est traité par un postback ,le visiteur étant redirigé en page 2 en cas de réussite de l'insertion, pour continuer à travailler.
    S'il fait "page précédente", il retombe sur la page 1. Si celle ci est expirée, le navigateur lui proposera de la rafraichir avec un avertissement...

    Le commun des mortels clique sur annuler, mais il y en a toujours pour rafraichir, et insérer une deuxième fois les données (sauf si avant avant l'insertion, tu inspectes si les données ne vont pas créer un doublon)...

    Je voulais juste faire ça autrement...

    Les deux codes sont simplifiés mais c'est pour le principe (comparaison entre deux dates...)

    Le code en C# fonctionne bien, mais il n'est pas de moi.
    Je l'adapte en VB, et là le comportement devient étrange.

    En exécutant pas à pas les 2 codes, c'est dans la routine de traitement du click sur le bouton qu'il y a un souci:

    Avec le code en C# il saute bien la clause ELSE si la condition du IF est vraie, et quitte la routine void Button1_click.

    Avec le code en VB, si la condition du IF est vraie, il saute le ELSE...mais en obervant pas à pas, il réexécute sub button1_click ! La clause IF n'est donc plus executée, mais la clause ELSE l'est...

    Je précise, dans le fichier ASPX, le code est identique pour la version C# et VB (sauf pour CodeFile et Language...)


    Si dans le code en VB je supprime la clause else, cela ne pose plus de problèmes mais mon lable n'affiche plus rien à la place de "Page Refreshed", et ce n'est pas le but


    J'ai bien essayé de remplacer le ELSE un deuxième IF qui traite le cas ou la condition du premier n'est pas réalisée, mais le problème est le même:

    le traitement du click est relancé!!!


    Edit:
    Je viens de repartir à zéro avec création d'un nouveau site vide dans VS, réécriture à la main sans copié collé, mais en recopiant soigneusement sans rien changer, à part les variables de Session et de ViewState que j'ai nommé CheckS et CheckV... et...

    Ca fonctionne!

    Les deux codes ont à présent le même comportement, alors que à part ces deux variables, je n'ai rien changé d'une ligne

    Et je ne pense pas que ce soit ça qui posait problême, sinon pourquoi la version C# fonctionnait elle?

    Pour le coup, question résolue!

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

Discussions similaires

  1. [PERL] transformation de fichier
    Par bob20000 dans le forum Langage
    Réponses: 6
    Dernier message: 27/07/2006, 11h13
  2. transformer un fichire Xml en pdf
    Par SuperFoustan dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 21/02/2003, 11h45
  3. transformer un jour en JJ/MM/AA
    Par gemini_010 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 08/11/2002, 22h55
  4. Transformer un caractère en type énuméré
    Par HT dans le forum Langage
    Réponses: 3
    Dernier message: 22/10/2002, 20h46
  5. FFT(Fast Fourier Transform)
    Par IngBen dans le forum Traitement du signal
    Réponses: 6
    Dernier message: 23/05/2002, 16h35

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