不在页面之间存储的属性:

时间:2015-06-09 23:40:57

标签: vb.net properties

我在网站上有一个.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

此处使用(Billing-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

此处不执行任何操作(Payment-details.aspx) - 这是购物车流程中的两个步骤(购物车 - > Billing-Details - > Payment-Details),始终显示为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

2 个答案:

答案 0 :(得分:1)

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

要使值保持跨页面,您可能会将该类存储在基页或会话中。

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

Session("Customer") = c

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

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

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

的值

答案 1 :(得分:0)

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

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

  

c.decNewTotal = Decimal.Parse(total)

祝你好运。