2015-11-06 33 views
0

我正在編寫一個ASP應用程序,其中用戶數據將被存儲在一個cookie中(在24小時後過期),並且當程序運行時,它應該搜索該cookie,並且將cookie中的內容添加到當前用戶值中,然後繼續執行代碼。aspx.vb cookie值的訪問和更新

Dim I As Integer ' iterator for cookie search 
     Dim foundcookie As Boolean = False ' flag if cookie found 
    Dim stakenow As Integer ' current stake held here 
    stakenow = stake.Text 
    Dim currentname As String 
    currentname = name.Text 
    For I = 0 To Request.Cookies.Count - 1 
     If Request.Cookies.Item(I).Name = currentname Then 
      foundcookie = True 
      stakenow = stakenow + Request.Cookies.Item(I).Value 
      currentstake.Text = currentstake.Text + stakenow.ToString 
      Request.Cookies.Item(I).Value = stakenow.ToString 
      Request.Cookies.Item(I).Expires = DateTime.Now.AddHours(24) 
     End If 
    Next 
    If Not foundcookie Then 
     Dim nameCookie As New HttpCookie(currentname) 
     nameCookie.Value = stakenow.ToString 
     nameCookie.Expires = DateTime.Now.AddHours(24) 
     Response.Cookies.Add(nameCookie) 
     currentstake.Text = currentstake.Text + stakenow.ToString 
    End If 

此代碼的工作,在第一時間,它創建一個具有價值的cookie,說150用該程序下次運行時,他們進入了用戶的「股份」爲150再次,目前的持股比例更新到300.但是,第三次運行,如果用戶輸入100,我們希望現在用戶的賭注是400,但是隻有250.我看到這個錯誤來自更新值未被正確寫回到cookie,因此只有在創建cookie時纔會添加原始值,以及鍵入的值。我嘗試過使用請求和響應cookie,並沒有運氣。有什麼建議麼?

回答

1

使用HttpCookieCollection.Set Method使更新後的Cookie會返回給客戶端:

If Request.Cookies.Item(I).Name = currentname Then 

    foundcookie = True 
    stakenow = stakenow + Request.Cookies.Item(I).Value 
    currentstake.Text = currentstake.Text + stakenow.ToString 

    Dim objCookie As HttpCookie = Request.Cookies.Item(I) 

    objCookie.Value = stakenow.ToString() 
    objCookie.Expires = DateTime.Now.AddHours(24) 

    HttpContext.Current.Response.Cookies.Set(objCookie) 

End If