2010-11-25 4 views
0

Ich habe den folgenden Code, der scheint OK zu funktionieren, außer für ein kleines Problem.Seiten erfordert zwei Lasten, um die Zeichenfolge zu ändern

Wenn der Benutzer die Seite zum ersten Mal aufruft, wird die korrekte Telefonnummer angezeigt. Wenn sie jedoch eine andere Nummer sehen, müssen sie die Seite zweimal laden, bevor die Nummer auf die neue Nummer wechselt.

Ich bin mir nicht sicher, wie ich das am besten erklären soll. Wenn Sie also mehr Informationen benötigen, fragen Sie bitte.

Public freeCallNumber As String 

Private Function getFreeCallNumber(ByVal value As String) As String 
    Select Case value 
     Case "EZ12" 
      Return "0800 11 22 333" 
     Case "WT45" 
      Return "0800 44 55 666" 
     Case Else 
      Return "0800 77 88 999" 
    End Select  
End Function  

Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs) 

    'set cookies here' 

    If Not Request.Cookies("LatestRefer") is Nothing Then 
     freeCallnumber = getFreeCallNumber(Request.Cookies("LatestRefer").Value) 
    Else 
     freeCallnumber = getFreeCallNumber(Request.Cookies("FirstRefer").Value) 
    End If   

End Sub 

Antwort

3

Wahrscheinlich liegt es daran, dass die Cookies erst bei der nächsten Seitenanforderung gesetzt werden. Cookies werden als "SET-COOKIE" -Kopfzeilen an den Client in der Antwort gesendet. Das heißt, wenn Sie später in Ihrem Code Request.Cookies tun, hat der Client sie noch nicht an die Seite gesendet. Das passiert bei der nächsten Anfrage des Benutzers.

Somit ist Response.Cookies nicht dasselbe wie Request.Cookies.

Sie können bestimmen, welche Cookies Sie festlegen möchten, in einer privaten Variable speichern und dann Cookies als normal für den Client festlegen. Dann überprüfen Sie später in Ihrem Code die Variable statt Request.Cookies.

Private cookieReferer as String 

Sub Page_Load(ByVal Sender As Object, ByVal E As EventArgs) 

    cookieReferer = "defautlValue" 
    // Add cookie with value from 'cookieReferer' 

End Sub 


    freeCallnumber = getFreeCallNumber(cookieReferer) 
+0

Ganz richtig, und genau das, was ich getan habe. Vielen Dank. Sehr geschätzt. – Tom

Verwandte Themen