【问题标题】:Getting previous page visited访问上一页
【发布时间】:2012-05-14 20:23:54
【问题描述】:

我正在尝试使用 VB.NET 使用以下代码在 ASP.NET 中访问您之前的页面:

Partial Class _Default Inherits Page        
    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        Dim previousPage As String = Page.Request.UrlReferrer.ToString
        If (Request.UrlReferrer <> Nothing) Then
            If previousPage.Contains("Login") Then
                Dim tUsername As String = Session("Username")
                lblUsername.Text = "Welcome, " + tUsername
            ElseIf previousPage.Contains("Register") Then
                Dim cUsername As String = Session("CUsername")
                lblUsername.Text = "Welcome, " + cUsername
            Else
                lblUsername.Text = "Welcome, Guest"
            End If
        End If
    End Sub
End Class

我收到此错误:

对象引用未设置为对象的实例。

在:

Dim previousPage As String = Page.Request.UrlReferrer.ToString

我想要做的是访问上一个页面,这样我就可以获得一个会话变量。

【问题讨论】:

  • 好吧,检查 Page.Request.UrlReferrer 如果它不为空,那么继续你的代码? Page.Request.UrlReferrer 可能为空,请查看文档。另外,为什么不使用 HttpContext.Current.User.Name 或类似的,而是将其保存到 Session?
  • 什么意思?我在上一页中使用了吗?
  • Dim previousPage As String = Page.Request.UrlReferrer.ToString 移动到 If (Request.UrlReferrer &lt;&gt; Nothing) Then 块内。这将停止空引用错误。
  • 谢谢!但是它应该显示“欢迎,客人”的部分不起作用,即如果新来者来到该网站,则不会显示任何内容。
  • 请尝试我的回答并告诉我。

标签: asp.net vb.net exception-handling httprequest nullreferenceexception


【解决方案1】:

不确定您要做什么,但虽然很容易回答您的具体问题,但您应该退后一步,回顾一下您为什么要这样做。

似乎您正在尝试基于某些身份验证来控制流量。如果是这样,请考虑 ASP.Net Forms Authentication +/- 登录控件。您可以将此架构“插入”到您现有的身份验证机制中(这意味着您不必连根拔起现有的东西来实现它)。

(如果您仍想重新发明轮子)考虑使用 cookie 而不是在登陆 “this” 页面之前尝试找出 “用户来自哪里” - 两者都可以变化 x - 您的网站拥有或将拥有的网页越多,意大利面条就越多。

【讨论】:

    【解决方案2】:

    试试这个代码。

    Partial Class _Default
            Inherits System.Web.UI.Page
    
            Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    
                If (Request.UrlReferrer <> Nothing) Then
    
                   Dim previousPage As String = Page.Request.UrlReferrer.ToString
    
                    If previousPage.Contains("Login") Then
    
                        Dim tUsername As String = Session("Username")
    
                        lblUsername.Text = "Welcome, " + tUsername
    
                    ElseIf previousPage.Contains("Register") Then
    
                        Dim cUsername As String = Session("CUsername")
    
                        lblUsername.Text = "Welcome, " + cUsername
                    End If
    
                Else
                        lblUsername.Text = "Welcome, Guest"
    
                End If
    
            End Sub
    
    End Class
    

    【讨论】:

      猜你喜欢
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 2019-08-04
      相关资源
      最近更新 更多