Bonjour à tous.
Je deviens fou : Dans le but de distinguer un rafraichissement d'une page, j'utilise ceci en C#:
Ca fonctionne très bien.
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"]; } }
Maintenant, je ne suis pas un pro du C# (et pro tout court), et j'utilise le VB...
Donc je transforme en :
A moins de devoir aller consulter l'ophtalmo, les deux codes sont équivalents?
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
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...
Partager