Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在VB.net中,数组和变量在结束子对象后自行清除_Asp.net_Vb.net - Fatal编程技术网

Asp.net 在VB.net中,数组和变量在结束子对象后自行清除

Asp.net 在VB.net中,数组和变量在结束子对象后自行清除,asp.net,vb.net,Asp.net,Vb.net,我正在ASP.net中编写一个times tables程序,我需要一些帮助。我遇到的问题是,当按钮子结束,屏幕再次弹出供用户输入时,所有数组和变量现在都设置为nothing或0 有没有办法在子结束后保留变量的所有值并在以后使用它们 任何帮助都将不胜感激 Public Class PickTimesTables Inherits System.Web.UI.Page Dim count As Integer = 0 Dim NumberQ As Integer D

我正在ASP.net中编写一个times tables程序,我需要一些帮助。我遇到的问题是,当按钮子结束,屏幕再次弹出供用户输入时,所有数组和变量现在都设置为nothing或0

有没有办法在子结束后保留变量的所有值并在以后使用它们

任何帮助都将不胜感激

Public Class PickTimesTables
    Inherits System.Web.UI.Page

    Dim count As Integer = 0
    Dim NumberQ As Integer
    Dim RandomN As Integer
    Dim FirstNumber() As Integer
    Dim FirstNumberTemp() As Integer
    Dim SecondNumber() As Integer
    Dim correctAnswers As Integer
    Dim inc As Integer = 0

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        PanelQuestion.Visible = False
        PanelAnalysis.Visible = False
    End Sub

    Protected Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click
        PanelQuestion.Visible = True
        lblOperator.Text = "X"
        If chktimes1.Checked = False And chktimes2.Checked = False And chktimes3.Checked = False And chktimes4.Checked = False And chktimes5.Checked = False And chktimes6.Checked = False And chktimes7.Checked = False And chktimes8.Checked = False And chktimes9.Checked = False And chktimes10.Checked = False And chktimes11.Checked = False And chktimes12.Checked = False Then
            MsgBox("Pick a Times Table to be Tested for..")
        ElseIf txtNoQuestion.Text = "" Then
            MsgBox("Pick the Number of Question for the test")
        Else
            NumberQ = txtNoQuestion.Text
            count = 0
            If chktimes1.Checked Then
                count = count + 1
            End If
            If chktimes2.Checked Then
                count = count + 1
            End If
            If chktimes3.Checked Then
                count = count + 1
            End If
            If chktimes4.Checked Then
                count = count + 1
            End If
            If chktimes5.Checked Then
                count = count + 1
            End If
            If chktimes6.Checked Then
                count = count + 1
            End If
            If chktimes7.Checked Then
                count = count + 1
            End If
            If chktimes8.Checked Then
                count = count + 1
            End If
            If chktimes9.Checked Then
                count = count + 1
            End If
            If chktimes10.Checked Then
                count = count + 1
            End If
            If chktimes11.Checked Then
                count = count + 1
            End If
            If chktimes12.Checked Then
                count = count + 1
            End If

            If txtNoQuestion.Text = 0 Then
                MsgBox("You cannot have a test with 0 Questions")
            Else
                ReDim FirstNumberTemp(count - 1)
                For i = 0 To count - 1
                    If chktimes1.Checked Then
                        FirstNumberTemp(i) = 1
                        chktimes1.Checked = False
                    ElseIf chktimes2.Checked Then
                        FirstNumberTemp(i) = 2
                        chktimes2.Checked = False
                    ElseIf chktimes3.Checked Then
                        FirstNumberTemp(i) = 3
                        chktimes3.Checked = False
                    ElseIf chktimes4.Checked Then
                        FirstNumberTemp(i) = 4
                        chktimes4.Checked = False
                    ElseIf chktimes5.Checked Then
                        FirstNumberTemp(i) = 5
                        chktimes5.Checked = False
                    ElseIf chktimes6.Checked Then
                        FirstNumberTemp(i) = 6
                        chktimes6.Checked = False
                    ElseIf chktimes7.Checked Then
                        FirstNumberTemp(i) = 7
                        chktimes7.Checked = False
                    ElseIf chktimes8.Checked Then
                        FirstNumberTemp(i) = 8
                        chktimes8.Checked = False
                    ElseIf chktimes9.Checked Then
                        FirstNumberTemp(i) = 9
                        chktimes9.Checked = False
                    ElseIf chktimes10.Checked Then
                        FirstNumberTemp(i) = 10
                        chktimes10.Checked = False
                    ElseIf chktimes11.Checked Then
                        FirstNumberTemp(i) = 11
                        chktimes11.Checked = False
                    ElseIf chktimes12.Checked Then
                        FirstNumberTemp(i) = 12
                        chktimes12.Checked = False
                    End If
                Next
                ReDim FirstNumber(NumberQ - 1)
                For i = 0 To NumberQ - 1
                    Randomize()
                    RandomN = FirstNumberTemp(Int(Rnd() * count))
                    FirstNumber(i) = RandomN
                Next

                ReDim SecondNumber(NumberQ - 1)
                For i = 0 To NumberQ - 1
                    Dim rn As New Random(Now.Millisecond)
                    RandomN = rn.Next(1, 13)
                    SecondNumber(i) = RandomN
                Next

                lblFirstN.Text = FirstNumber(0)
                lblSecondN.Text = SecondNumber(0)
            End If
        End If
    End Sub

    Protected Sub txtInput_TextChanged(sender As Object, e As EventArgs) Handles txtInput.TextChanged
        NumberQ = txtNoQuestion.Text
        If txtInput.Text = FirstNumber(inc) * SecondNumber(inc) Then
            lblFirstN.Text = FirstNumber(inc + 1)
            lblSecondN.Text = SecondNumber(inc + 1)
            correctAnswers = correctAnswers + 1
            txtInput.BackColor = Drawing.Color.Green
        Else
            txtInput.BackColor = Drawing.Color.Red
            lblFirstN.Text = FirstNumber(inc + 1)
            lblSecondN.Text = SecondNumber(inc + 1)
        End If
    End Sub
End Class

它们都将被重置,因为这是web的无状态特性。它们不会保留它们的值,因为以后每次您查看该页面(或使用调试器逐步查看该页面)时,它都是一个新请求


您应该使用google在ViewState或会话中存储asp.net变量,即ViewState支持的属性。

这是asp.net Webforms新手的常见错误。有这样一种想法,您的页面类实例在整个会话中存在,用于用户在浏览器中与页面的所有交互这不会发生。与页面的任何交互都会导致触发事件,从而创建从客户端到服务器的新回发,并且每次回发都使用page类的全新实例。当用户在浏览器中看到您的页面时,您用于为该视图呈现html的任何页面对象都已被销毁并被垃圾回收

您可以做一些事情来解决这个问题,比如在会话、URL或ViewState中添加变量,但通常您需要完全重新考虑您的方法,以使网站更自然

此外,您还需要重新考虑在VB.Net代码中处理TextChanged事件。一般来说,TextChanged事件需要在25-40毫秒内返回给用户,否则视图会感觉非常缓慢。当程序在用户的计算机上运行,并且具有工作站的所有内存和CPU能力时,这通常不是问题。对于web站点来说,情况完全不同,在请求到达服务器之前,您可能会有80毫秒的延迟,而在进行任何处理之前,响应可能会有80毫秒的延迟,服务器会共享其CPU和内存资源,以支持尽可能多的用户

相反,应该考虑使用javascript事件进行处理,并且只有在用户最终尝试提交或保存最终结果时才验证VB.Net代码中的文本


最后,对
MsgBox()
函数的调用也需要进行。它似乎只能在您的系统上工作,因为您的web服务器与web浏览器位于同一台机器上。当您实际将其放在一个真正的服务器上并从其他位置进行测试时,这些消息将显示在服务器上,而不是用户的web浏览器中

很抱歉,我的回复太晚了,但我正在做一个乘法程序,可以让用户测试他们的技能,我需要这个程序输出第一个等式,然后让用户输入答案。这将触发textchanged处理程序并执行计算。有没有其他不使用textchanged处理程序的方法呢?在JavaScript中完成这一部分