Строка asp.net не сохраняется при обратной передаче - PullRequest
0 голосов
/ 09 ноября 2010

Я пытаюсь создать следующий сценарий ...

  • Пользователь входит в систему, вводя свой идентификатор пользователя и пароль.
  • Если у него нет адреса электронной почтыназначенные им данные для входа, они просят предоставить один, прежде чем они смогут продолжить.
  • Затем они переходят на домашнюю страницу в состоянии входа в систему.

Проблема у менязаключается в том, что идентификатор пользователя и пароль не сохраняются при отправке адреса электронной почты, поэтому вход в систему не удается.

Вот код ...

Dim userid as String
Dim password as String

Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)

end sub


Sub Page_Transfer()

Dim userLookup As mySource.myData = New mySource.myData()
Dim drSet1 As DataSet = userLookup.xyz("SELECT * FROM OPENQUERY (myDatabase,' SELECT userid, password, email1 FROM userInfo WHERE userid = ''" & userid & "'' AND password = ''" & password & "'' ') ")

If drSet1.Tables(0).Rows.Count < 1 Then
    'Invalid Bond number
    Page.ClientScript.RegisterClientScriptInclude("loginError", "scripts/loginError.js")
Else

        If drSet1.Tables(0).Rows(0).Item("email1") = "" Then
            'No email address
            Page.ClientScript.RegisterClientScriptInclude("emailAddressSubmit", "scripts/emailAddressSubmit.js")
        Else

            response.redirect("home.aspx")

        End If

End If

End Sub


Sub Submit_Email(sender As Object, e As System.Web.UI.ImageClickEventArgs)

'script to add email address to database
'this is where the strings are losing their values

Page_Transfer()

End Sub


Sub Submit_login(sender As Object, e As System.Web.UI.ImageClickEventArgs)

userid = Trim(useridfield.text)
password = Trim(passwordfield.text)

Page_Transfer()

End Sub

Есть идеи?

1 Ответ

3 голосов
/ 09 ноября 2010

Проблема в том, что при каждой обратной передаче страница проходит новый жизненный цикл.Это означает, что любые переменные экземпляра вашей страницы, которые вы установили во время одной обратной передачи, теряются в следующей.

Как решить эту проблему?У вас есть следующие опции:

  1. Считать идентификатор пользователя и пароль еще раз из элементов управления (поле идентификатора пользователя и поле пароля).Поскольку элементы управления ASP.NET используют состояние представления для сохранения своих значений после обратной передачи, значение в этих элементах управления должно оставаться действительным.

  2. Используйте состояние представления самостоятельно, чтобы сохранить значения переменной, т.е., замените

    Dim userid as String 
    Dim password as String 
    

    на

    Protected Property userid As String
        Get
            Return DirectCast(Me.ViewState("userid"), String)
        End Get
        Set
            Me.ViewState("userid") = value
        End Set
    End Property
    ' same for password
    

    Однако имейте в виду, что состояние просмотра небезопасно, т. е. оно может быть изменено опытным пользователем вашего веб-приложения.Таким образом, не забудьте проверить значения идентификатора пользователя и пароля еще раз (проверьте БД, чтобы убедиться, что они совпадают), прежде чем присваивать им почтовый адрес.(Кстати, то же самое относится и к варианту 1.)

  3. Сохраните значения в другом месте, например, в Session .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...