Пользователь вводит код в TextBox, код добавляется в URL (используя сеанс) - PullRequest
0 голосов
/ 01 сентября 2011

Я использую ASP.net 4.0 VB:)

Я использую переменную сеанса, чтобы добавить введенный пользователем код в URL каждой страницы.Я могу получить код, который будет отображаться в конце URL-адреса страницы, на котором находится мое текстовое поле, но что я могу добавить на каждую страницу, чтобы убедиться, что сеанс остается в конце каждого URL-адреса, который посещает человек во время сеанса?Это код со страницы, в которую пользователь вводит свой код пользователя.

  Protected Sub IBTextBoxButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles IBTextBoxButton.Click
  Session("IB") = IBTextBox.Text
  Dim IB As String = Session("IB")
End Sub


 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
 ProductID.Value = Request.QueryString("id")
 If Session("IB") Is Nothing Then
     tab4.Visible = "False"
 Else
     tab4.Visible = "True"

 End If
End Sub

Это то, что у меня есть на странице загрузки одной из других страниц.Что еще добавить, чтобы убедиться, что переменная добавлена ​​в URL этой страницы?

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Dim IB As String
    IB = Session("IB")
End Sub

Ответы [ 3 ]

1 голос
/ 01 сентября 2011

Подход, который я мог бы использовать, заключается в создании класса базовой страницы, который могут наследовать все ваши страницы. Базовая страница будет наследовать System.Web.UI.Page.

Внутри класса вашей базовой страницы создайте свойство для IB, а также обработайте событие загрузки страницы.

В этом случае проверьте, есть ли в QueryString параметр IB. Если это так, установите для свойства значение в параметре.

Private _IB As String
Public Property IB() As String
    Get
        Return _IB
    End Get
    Set(ByVal value As String)
        _IB = value
    End Set
End Property

Public Function GetIB(ByVal url As String) As String
    If Not(_IB = String.Empty) Then
        If (url.Contains("?")) Then
            Return "&IB=" & _IB
        Else
            Return url & "?IB=" & _IB
        End If
    Else
        Return url
    End If
End Function

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not (String.IsNullOrEmpty(Request.QueryString("IB"))) Then
        _IB = Request.QueryString("IB")
    End If
End Sub

Наконец, в вашей разметке вам нужно будет поместить что-то вроде следующего в конце всех ваших ссылок:

<a href="<% =GetIB("nextpage.aspx") %>">next page</a>
1 голос
/ 01 сентября 2011
  string url = Request.Url.ToString();
  string newUrl = url + url.Contains("?") ? "&" : "?" + "ib=" + Server.UrlEncode(IBTextBox.Text);
  Response.Redirect(newUrl);
  return;
0 голосов
/ 18 октября 2011

Я бросил этот код на главную страницу, чтобы убедиться, что каждая страница знает, есть ли сеанс или нет.Всем спасибо за помощь!

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) 
Handles Me.Load
  If Session("IB") Is Nothing Then

    IBText.Visible = True
    IBTextBox.Visible = True
    IBTextBoxButton.Visible = True
  Else

    IBText.Visible = False
    IBTextBox.Visible = False
    IBTextBoxButton.Visible = False
    lblIB.Visible = True

    lblIB.Text = "Welcome, " + Session("First_Name") + " " + Session("Last_Name")
  End If
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...