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







Répondre avec citation
Partager