属性 不在页面之间存储:

Property not storing between pages:

我在一个站点上有一个 .vb 文件,它存储了在该站点的各个页面上使用的几十个属性。我是公司的新手,也是唯一的网络开发人员,但我并没有自己制作网站。我是来尝试更新它的。

我已将两个属性添加到文件中,一个有效,另一个无效,但我不明白为什么?

(缺货有效,新总计无效)

第一个:

Property OutOfStockItems() As Integer
    Get
        Return intOutOfStockItems
    End Get
    Set(ByVal value As Integer)
        intOutOfStockItems = value
    End Set
End Property

在此处设置 (Cart.aspx) - 此 属性 是根据购物车中的商品数量设置的,布尔值缺货为 'true'.

Protected Sub btnCheckout_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCheckout.Click
    c.intOutOfStockItems = ooscount
    c.decNewTotal = Decimal.Parse(total)
    Response.Redirect("billing-details.aspx")
    'txtVoucher.Text = "New Total: " + c.decNewTotal.ToString()
End Sub

在此处使用(计费-Details.aspx)- 购物车过程中的后一页

'Check if customer has ordered out of stock items
        If c.intOutOfStockItems >= 1 Then
            pnlOutOfStockBlurb.Visible = True
        Else
            pnlOutOfStockBlurb.Visible = False
        End If

第二个:

Property NewTotal() As Decimal
    Get
        Return decNewTotal
    End Get
    Set(ByVal value As Decimal)
        decNewTotal = value
    End Set
End Property

在此处设置 (Cart.aspx) - 此十进制值可用于购物车页面的任何位置。

    Protected Sub percentageDiscount()

    Dim invert As Integer = 100 - Voucher.DiscountAmount
    Dim percent As Decimal = invert / 100
    total = Decimal.Parse(grandTotalInt)

    If Voucher.AppliesTo = "Cart Total" Then
        If total > Voucher.Amount Then
            total = total * percent
        End If

    End If

    c.decNewTotal = Decimal.Parse(total)
    txtVoucher.Text = c.decNewTotal.ToString()
End Sub

这里什么都不做(付款-details.aspx)- 这是购物车流程中的两个步骤(购物车 -> 账单明细 -> 付款明细) , 始终显示为 0.

lblSavings.Text = c.decNewTotal.ToString()

购物车页面上的这一行向文本框显示了正确的数字,但该数字根本不会转到新页面。

txtVoucher.Text = c.decNewTotal.ToString()

编辑

Imports DataAccessLayer
Imports System.Data
Imports System.Xml
Imports System.Net

Imports System.Reflection
Imports System.Net.Mail

Partial Class payment_details
Inherits System.Web.UI.Page
Dim c As User

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

在您的代码中,您正在访问在本地声明为 c 的 class。

要使值在页面间保持不变,您可能会将 class 存储在基页或会话中。

如果您要存储它并从 Session 中检索它,请确保在设置它的属性后将其保存回 Session。

Session("Customer") = c

此外,您似乎没有使用 class 属性来设置或获取值。

Protected Sub btnCheckout_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCheckout.Click
    c.intOutOfStockItems = ooscount
    c.decNewTotal = Decimal.Parse(total)
    Response.Redirect("billing-details.aspx")
    'txtVoucher.Text = "New Total: " + c.decNewTotal.ToString()
End Sub

应该是这样的;

Protected Sub btnCheckout_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnCheckout.Click
    OutOfStockItems = ooscount
    NewTotal = Decimal.Parse(total)
    Response.Redirect("billing-details.aspx")
    'txtVoucher.Text = "New Total: " + NewTotal.ToString()
End Sub

当您通过 属性 设置值时,属性 本身将设置局部变量 intOutOfStockItems 的值decNewTotal

我可能会离开这里 - 但在有效的示例中,您正在设置 属性。在第二个中,您正在设置您在 (decNewTotal v. NewTotal) 中保留 属性 值的项目。这可能是微不足道的,但如果你已经有一个 属性,你也可以 set/use 它。

在我输入时,系统给出了一个关于 get/set 的新答案。另外,请确保不是上述任何值(反转、百分比、总计)将您的值截断为零,即。检查设置时的值 c.decNewTotal:

c.decNewTotal = Decimal.Parse(total)

祝你好运。