Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
如何在vb.net和asp.net中匹配答案?_Asp.net_Vb.net - Fatal编程技术网

如何在vb.net和asp.net中匹配答案?

如何在vb.net和asp.net中匹配答案?,asp.net,vb.net,Asp.net,Vb.net,我随机将3个问题显示在asp.net页面上。我想在数据库中匹配安全问题和正确答案。但当我在文本框中输入正确答案并单击“下一步”按钮后,答案与屏幕上显示的当前问题不匹配。但如果我单击“下一步”按钮,显示的下一个问题将与我在上一个问题的文本框中输入的答案相匹配。我认为这是因为刷新页面后,答案与问题和答案匹配。请帮忙。这是我的密码。谢谢 vb.net代码 Dim SecurityQuestion As New DBDataContext Dim randomNumber As Integer Pro

我随机将3个问题显示在asp.net页面上。我想在数据库中匹配安全问题和正确答案。但当我在文本框中输入正确答案并单击“下一步”按钮后,答案与屏幕上显示的当前问题不匹配。但如果我单击“下一步”按钮,显示的下一个问题将与我在上一个问题的文本框中输入的答案相匹配。我认为这是因为刷新页面后,答案与问题和答案匹配。请帮忙。这是我的密码。谢谢

vb.net代码

Dim SecurityQuestion As New DBDataContext
Dim randomNumber As Integer

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim SecurityQuestion As New DBDataContext
    Dim rowCount As Integer = (From t In SecurityQuestion.tblSecurityQuestions Select t).Count + 1
End Sub

Protected Sub btnNext_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnNext.Click
    ValidateAnswer()
End Sub

Private Sub LoadSecurityQuestion()
    Dim SecurityQuestion As New DBDataContext
    Dim mySecurityQuestion = (From c In SecurityQuestion.tblSecurityQuestions Where c.PkID = randomNumber Select c)
    Dim rowCount As Integer = (From t In SecurityQuestion.tblSecurityQuestions Select t).Count + 1
    randomNumber = New Random().Next(1, rowCount)
    With gvQuestion
        .DataSource = mySecurityQuestion
        .DataBind()
    End With
End Sub

Private Sub ValidateAnswer()
    Dim SecurityQuestion As New DBDataContext
    Dim validate = (From r In SecurityQuestion.tblRegistrations From s In SecurityQuestion.tblSecurityQuestions _
        Where s.PkID = r.Q01 And r.A01 = txtSecurityAns.Text And r.UserID = ad And s.PkID = randomNumber _
        Select r)

    If validate.Count > 0 Then
        Msg3.Text = "Correct Answer"
    Else
        Msg3.Text = "Invalid Answer"
    End If
End Sub

在我发布这个答案的时候,看起来你的代码中有一小部分可能已经丢失了。作为一个例子,我看不出您实际上在哪里调用方法LoadSecurityQuestion,但听起来您可能会在验证成功后重新调用方法LoadSecurityQuestion

我认为可以通过使用“if”限定符包装对LoadSecurityQuestion的调用来解决此问题。例如,假设您正在加载事件处理程序中调用LoadSecurityQuestion。如果这样做,则新的加载事件处理程序可能会读取如下内容:

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    ...
    If IsPostBack Then
        ' If you wrap all of your Me.LoadSecurityQuestion calls 
        ' with "If" statements like this one, then it should keep
        ' the security question from changing when the user 
        ' enters the correct answer
        If Msg3.Text <> "Correct Answer" Then                
            Me.LoadSecurityQuestion()
        End If
    End If
    ...
End Sub
Protected Sub Page\u Load(发送方作为对象,e作为System.EventArgs)处理Me.Load
...
如果我回来的话
'如果您结束所有Me.LoadSecurityQuestion呼叫
'使用像这样的“如果”语句,那么它应该保持
'当用户
”输入正确答案
如果Msg3.文本为“正确答案”,则
Me.LoadSecurityQuestion()
如果结束
如果结束
...
端接头

在哪里调用此LoadSecurityQuestion()方法?plz发布完整的源代码。