Asp.net 添加新产品时会覆盖会话阵列列表

Asp.net 添加新产品时会覆盖会话阵列列表,asp.net,.net,Asp.net,.net,我的目标是创建一个购物车,当点击链接时,它应该创建一个包含所有产品详细信息的新产品类。当查询字符串传递到购物车页面时,我已经创建了一个新的产品类,但是如果我尝试向其中添加新产品,它似乎会被覆盖(这需要离开购物车页面) 我花了好几天的时间寻找答案,并尝试了所有我找到的人,但似乎没有一个奏效。我做错了什么 这是我的购物车页面代码: Partial Class ShoppingCartPage Inherits Page Dim shoppingCart = New ArrayList() Dim

我的目标是创建一个购物车,当点击链接时,它应该创建一个包含所有产品详细信息的新产品类。当查询字符串传递到购物车页面时,我已经创建了一个新的产品类,但是如果我尝试向其中添加新产品,它似乎会被覆盖(这需要离开购物车页面)

我花了好几天的时间寻找答案,并尝试了所有我找到的人,但似乎没有一个奏效。我做错了什么

这是我的购物车页面代码:

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在配置文件或 在Page指令中。还请确保 System.Web.SessionStateModel或自定义会话状态模块不可用 包含在中的
\
部分中 应用程序配置。”


即使在我的web配置中有
sessionState mode=“InProc”timeout=“20”
,并且在两个适用的页面上都有
enableSessionState=“true”
,我还是会遇到这个错误。

问题在下面一行

会话(“shoppingCartSession”)=shoppingCart

您正在将shoppingCart字段分配给会话项目,并且该字段在每次导航到页面时创建,因此它将覆盖会话数据,因此 您可以尝试类似的方法(只需直接添加到会话项中)


希望这能有所帮助

所以这似乎已经解决了问题。当我返回购物车页面时,我将当前会话添加回数组中

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

我还检查了我的IIS设置,会话状态设置为trueOk,这样如果我将该行放在页面加载子例程中,错误就会消失。这无助于解决方案的运行,尽管没有修复它,这是在会话中添加一个新产品,而不是arraylist,然后我需要将它发送到新数据表中的行中。我将会话对象更改为.add而不是分配arraylist,但它仍然没有添加多个项arraylist中的问题不在会话中,所以,为什么你需要会话对象,因为我需要能够去其他页面,并添加更多的产品到购物车,而不会丢失以前的对象。我认为我们之间缺少了一些东西,这取决于当前的解决方案,你可以考虑你的会话对象是购物车,并且从不同的页面向它添加更多的项目。这没有问题
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