Asp.net 用户在文本框中输入代码,代码被添加到URL(使用会话)

Asp.net 用户在文本框中输入代码,代码被添加到URL(使用会话),asp.net,vb.net,session,Asp.net,Vb.net,Session,我正在使用ASP.net 4.0 VB:) 我使用会话变量将用户输入的代码添加到每个页面的url中。我可以让代码显示在我的文本框所在的页面URL的末尾,但是我应该向每个页面添加什么来确保会话保持在会话期间访问的每个URL的末尾?这是用户输入其用户代码的页面中的代码 Protected Sub IBTextBoxButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles IBTextBoxButton.Cl

我正在使用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

我可能使用的方法是创建一个所有页面都可以继承的基本页面类。然后,基本页将继承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>

我将此代码放入母版页,以确保每个页面都知道会话是否存在。谢谢大家的帮助

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

在响应和返回下有弯曲的线条。它说“声明预期”-响应和“语句不能出现在方法bosy/多行lambda”之外”-return我给出的代码是C#(我已经多年没有看过VB了)。当然,代码需要在函数中。假设用户通过按钮提交页面,此代码将进入按钮的onClick处理程序。当我在文本框中输入一个代码时,会出现一个错误,该代码显示
Dim newUrl As String=If(url&url.Contains(“?”)、“?”、“?”、”和“ib=“&Server.UrlEncode(IBTextBox.Text))
“输入字符串的格式不正确。”,stackoverflow是一个很好的论坛,可以帮助您解决特定的设计和编码问题。这不是一个逐行对编程或调试的工作-您需要自己做一些腿部工作。也就是说,您可能希望使用一些额外的代码(来自布局和代码隐藏)来补充原始问题,以帮助解决此问题。很难帮助你,因为有一小堆带有注释的部分代码。我忘了提到有一个数据库,其中包含与IB销售或为我们提供的产品相关的所有代码。这些代码是否需要更改以连接到该数据库?是的,您可以添加一些代码来检查数据库中代码的状态。如果它存在,则继续将其附加到URL,否则删除它。这可能会带来一些开销问题,具体取决于您的站点有多忙,因此使用缓存对象可能有助于在检索到有效代码后存储这些代码。我将这些代码放在CodeBehind中,不确定这是否是您的意思,但我就是这样做的。我在每个链接中都使用了GetIB,当我在文本框中输入代码时,什么都不会发生。代码只是放在文本框中,页面看起来好像在尝试做什么,但在我看来它什么也没做。当我现在单击每个链接时,?IB=就会显示出来,我如何使它只在用户输入代码后显示?很抱歉延迟。如果我的理解是正确的,我相信拥有空白IB令牌的问题将是因为_IB变量是空的。若要修复它,请在GetIB中使用以下内容包装IF块:
IF Not(_IB=String.Empty),然后
,则此方法中已经存在的块应该在该块中。我已经更新了上面的代码以反映这一点。
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