我有以下代码,除了一个小问题外似乎没问题。
当用户首次访问该页面时,会显示正确的电话号码,但在第二次访问时 - 如果他们应该看到不同的号码,则需要在该号码更改为新号码之前加载该页面两次。
我不太确定如何解释这个问题,所以如果您需要更多信息请咨询。
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
答案 0 :(得分:3)
这可能是因为在下一页请求之前不会设置cookie。 Cookie在响应中作为“SET-COOKIE”标头发送给客户端。这意味着当您稍后在代码中执行Request.Cookies时,客户端尚未将它们发送到页面。这发生在用户的下一个请求中。
因此,Response.Cookies
与Request.Cookies
不同。
您可以做的是确定要设置的Cookie,保存在私有变量中,然后将Cookie设置为客户端的正常情况。然后,在代码中稍后检查变量而不是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)