我的目标是创建一个购物车,单击链接时,它应该创建一个包含所有产品详细信息的新产品类。当查询字符串传递到购物车页面时,我已经创建了一个新的产品类,但是,如果我尝试向其中添加新产品(需要离开购物车页面),它似乎会被覆盖
我花了几天时间寻找答案,并尝试了所有我发现的人,但似乎都没有用。我在做什么错了?
这是我在购物车页面上的代码:
Partial Class ShoppingCartPage
Inherits Page
Dim shoppingCart = New ArrayList()
Dim shoppingCartSession As String
Private Sub ShoppingCartPage_Load(sender As Object, e As EventArgs) Handles Me.Load
If IsNothing(Session("shoppingCartSession")) Then
shoppingCart = New ArrayList()
End If
shoppingCart.Add(New Product(Request.QueryString("ProductCode"), Request.QueryString("ProductName"), Request.QueryString("Category"), Val(Request.QueryString("Price")), Request.QueryString("Description")))
Session("shoppingCartSession") = shoppingCart
Me.TextBox1.Text = shoppingCart.Item(0).ToString & " count: " & shoppingCart.Count
End Sub
End Class
我试图将全局变量设置为
Dim shoppingCart = Session("ShoppingListSession")
但是它给了我这个错误:
System.Web.HttpException:'会话状态只能在以下情况下使用 在配置文件中或在配置文件中将enableSessionState设置为true 在Page指令中。还请确保 System.Web.SessionStateModule或自定义会话状态模块是 包含在 应用程序配置。'
即使我的Web配置中有<configuration>\<system.web>\<httpModules>
,并且在两个适用的页面上都有sessionState mode="InProc" timeout="20"
,我仍然遇到此错误。
答案 0 :(得分:0)
问题出在以下行
Session(“ shoppingCartSession”)= shoppingCart
您正在将shoppingCart字段分配给会话项,并且每次您导航到页面时都会创建该字段,因此该字段将覆盖会话数据,因此 您可以尝试类似的操作(只需直接添加到会话项中即可)
Private Sub ShoppingCartPage_Load(sender As Object, e As EventArgs) Handles Me.Load
If IsNothing(Session("shoppingCartSession")) Then
shoppingCart = New ArrayList()
Session("shoppingCartSession") = shoppingCart
End If
Session("shoppingCartSession").Add(New Product(Request.QueryString("ProductCode"), Request.QueryString("ProductName"), Request.QueryString("Category"), Val(Request.QueryString("Price")), Request.QueryString("Description")))
Me.TextBox1.Text = shoppingCart.Item(0).ToString & " count: " & shoppingCart.Count
希望这会有所帮助
答案 1 :(得分:0)
所以这似乎已经解决了。当我回到购物车页面时,我将当前会话添加回数组中。
Private Sub ShoppingCartPage_Load(sender As Object, e As EventArgs) Handles Me.Load
If Not (IsPostBack) Then
If Not (Request.QueryString.ToString().Length.Equals(0)) Then
If Session("shoppingCartSession") Is Nothing Then
shoppingCart = New ArrayList()
shoppingCart.Add(New Product(Request.QueryString("ProductCode"), Request.QueryString("ProductName"), Request.QueryString("Category"), Val(Request.QueryString("Price")), Request.QueryString("Description")))
Session("shoppingCartSession") = shoppingCart
Else
shoppingCart = CType(Session("shoppingCartSession"), ArrayList)
shoppingCart.Add(New Product(Request.QueryString("ProductCode"), Request.QueryString("ProductName"), Request.QueryString("Category"), Val(Request.QueryString("Price")), Request.QueryString("Description")))
Session.Add("shoppingCartSession", shoppingCart)
End If
Me.TextBox1.Text = shoppingCartSession
End If
End If
End Sub