代码之家  ›  专栏  ›  技术社区  ›  Tom

页面需要两次加载才能更改字符串

  •  0
  • Tom  · 技术社区  · 14 年前

    我有以下代码,似乎工作正常,除了一个小问题。

    当用户第一次访问页面时,会显示正确的电话号码,但在第二次访问时-如果他们应该看到不同的号码,他们需要在号码更改为新号码之前加载页面两次。

    我不太清楚如何最好地解释这一点,所以如果你需要更多的信息,请一定要问。

      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
    
    1 回复  |  直到 14 年前
        1
  •  3
  •   Torbjörn Hansson    14 年前

    可能是因为在下一页请求之前没有设置cookies。COOKIE作为“SET-COOKIE”发送到响应中的客户端。这意味着当你稍后在代码中请求时,客户端还没有将cookie发送到页面。这在用户的下一个请求中发生。

    因此, Response.Cookies Request.Cookies .

    请求。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)
    
    推荐文章