在我的代码中,我想检查引荐来源网址是否存在,以及引荐来源网址是否包含特定的子字符串。我知道如何检查子字符串:
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
任何人都知道如何检查推荐人是否存在?
答案 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