Can';t保持运行总计-ASP.NET/VB

Can';t保持运行总计-ASP.NET/VB,asp.net,vb.net,cumulative-sum,Asp.net,Vb.net,Cumulative Sum,我的任务是创建一个网站,人们可以用它来预订晚餐。我们正在为表单使用Visual Basic代码。它应该记录每种晚餐的总数。我无法将运行总数重置为零。我在button click事件之外声明了它们。不知道我哪里出错了。代码如下: Option Strict On Partial Class _Default Inherits System.Web.UI.Page Private Chicken_RT As Integer Private Rib_RT As Integer Private V

我的任务是创建一个网站,人们可以用它来预订晚餐。我们正在为表单使用Visual Basic代码。它应该记录每种晚餐的总数。我无法将运行总数重置为零。我在button click事件之外声明了它们。不知道我哪里出错了。代码如下:

Option Strict On


Partial Class _Default
Inherits System.Web.UI.Page

Private Chicken_RT As Integer
Private Rib_RT As Integer
Private Veg_RT As Integer

Protected Sub SubmitButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles SubmitButton.Click
    'Variables
    Dim DinnerPrice As Integer
    Dim RadioSelect As Boolean = True
    Dim Tickets As Integer
    Dim DinnerType As String

    'Parsing
    Tickets = Integer.Parse(TicketTextBox.Text)

    'Validation / Calculations
    If TicketRangeValidator.IsValid And TicketValidator.IsValid Then
        If ChickenRadio.Checked = True Then
            DinnerPrice = Tickets * 15
            Chicken_RT += Tickets
            DinnerType = "Chicken"
        ElseIf RibRadio.Checked = True Then
            DinnerPrice = Tickets * 20
            Rib_RT += Tickets
            DinnerType = "Rib"
        ElseIf VegetarianRadio.Checked = True Then
            DinnerPrice = Tickets * 12
            Veg_RT += Tickets
            DinnerType = "Vegetarian"
        Else
            RadioErrorLabel.Text = ("Please select a dinner type")
            RadioSelect = False
        End If

        'Display results
        If RadioSelect = True Then
            If OpenBarCheckBox.Checked = True Then
                DinnerPrice += Tickets * 15
                OpenBarLabel.Text = "Yes"
            Else
                OpenBarLabel.Text = "No"
            End If

            NumberDinnersLabel.Text = Tickets.ToString()
            DinnerTypeLabel.Text = DinnerType
            TotalCostLabel.Text = DinnerPrice.ToString("C")
            TotalChickenLabel.Text = Chicken_RT.ToString()
            TotalRibLabel.Text = Rib_RT.ToString()
            TotalVegetarianLabel.Text = Veg_RT.ToString()

        End If
    End If

End Sub

最后一节课

好吧,我看到你正在阅读
TicketTextBox
,但我没有看到你把它分配到任何地方。如果你不赋值,它的值不是总是零吗?

好吧,我看到你在读
TicketTextBox
,但我没有看到你在任何地方赋值。如果不赋值,它的值不是总是零吗

我在按钮点击事件之外声明了[运行总数]

每次处理事件时,您都在处理page类的新实例。

明白这一点,这里发生的一切都应该对你有意义。您必须将总计保存在一个跨单个http请求(如viewstate、会话、应用程序缓存、文件系统或数据库)持久存在的位置。类中的变量不会在单个http请求之间持久化

我在按钮点击事件之外声明了[运行总数]

每次处理事件时,您都在处理page类的新实例。


明白这一点,这里发生的一切都应该对你有意义。您必须将总计保存在一个跨单个http请求(如viewstate、会话、应用程序缓存、文件系统或数据库)持久存在的位置。类中的变量不会在单个http请求之间持久化。

正如Joel所说,当每个http请求创建一个新的类实例时,这些值不会持久化。在这种情况下,这条路很适合你

首先,删除这些代码行:

    Private Chicken_RT As Integer
    Private Rib_RT As Integer
    Private Veg_RT As Integer
其次,将其放入.aspx标记中(嵌套在表单标记中):

变成:

Veg_RT.Value = (CInt(Veg_RT.Value) + Tickets).ToString()
(对所有跑步总数重复此操作。)

要访问您的总数,请执行以下操作:

Dim intVegTotal As Integer = CInt(Veg_RT.Value)

正如Joel所说,当每个HTTP请求创建一个新的类实例时,这些值不会持久化。在这种情况下,这条路很适合你

首先,删除这些代码行:

    Private Chicken_RT As Integer
    Private Rib_RT As Integer
    Private Veg_RT As Integer
其次,将其放入.aspx标记中(嵌套在表单标记中):

变成:

Veg_RT.Value = (CInt(Veg_RT.Value) + Tickets).ToString()
(对所有跑步总数重复此操作。)

要访问您的总数,请执行以下操作:

Dim intVegTotal As Integer = CInt(Veg_RT.Value)

我正在将其分配给变量
Tickets
。正确,但您从未将您的ticket值分配回TicketTextBox。因此,每次单击按钮时,票证都从0开始计算。我将其分配给变量
Tickets
。正确,但您从未将票证值分配回TicketTextBox。所以每次你点击这个按钮,门票都是从0开始计算的。谢谢,这帮了大忙。这门课是我从经济学课上退学后选修的,所以我错过了前三节课。谢谢,这对我帮助很大。我从经济学课上退学后就上了这门课,所以我错过了前三节课。