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...