检查引荐来源是否存在

时间:2011-07-25 15:26:59

标签: asp.net vb.net .net-1.1

在我的代码中,我想检查引荐来源网址是否存在,以及引荐来源网址是否包含特定的子字符串。我知道如何检查子字符串:

If( InStr( Request.UrlReferrer.ToString(), "some sub string here" ) > 0 ) Then

但我不知道如何检查推荐人是否存在。如果在地址栏中手动输入URL,则不存在引用。所以我尝试了这个,但这不起作用:

If (Not (Request.UrlReferrer.ToString() = "")) And (InStr(Request.UrlReferrer.ToString(), "some sub string here") > 0) Then

任何人都知道如何检查推荐人是否存在?

2 个答案:

答案 0 :(得分:5)

我认为您的问题是,当您使用And时,您正在使用AndAlso

And不是短路的。因此,运行时将评估And的每一侧,如果双方都是true,则返回true。所以你可能得到NullReferenceException我猜是因为你试图查看引用者是否包含某些东西,当引用者为空时,因为你没有使用短路评估。

相反,AndAlso是短路的,如果上半部分为假,则不会费心去评估声明的后半部分。

我从来没有找到一个好的,令人信服的理由在VB中使用And而不是AndAlso

无论如何这应该对你有用。

If (Not IsNothing(Request.UrlReferrer)) AndAlso Request.UrlReferrer.ToString.Contains("substring") Then
    Dosomething
End If

答案 1 :(得分:2)

只需检查它是否为空

If Request.UrlReferrer IsNot Nothing Then
  .....do your stuff....

End If