我正在尝试将会话变量与另一个字符串进行比较,以便我可以启用或禁用图像按钮。我正在使用带有sql2005 express后端的asp.net vb
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim string1 As String
Dim string2 As String
Label1.Text = Session("Username")
Label2.Text = Session("UserId")
string1 = Session("Username")
string2 = "medev"
If String.Compare(string1, string2, True) = 1 Then
ImageButton1.Enabled = False
End If
答案 0 :(得分:1)
String.Compare会返回-1
,0
或1
,具体取决于结果:
String.Compare("A", "B", true) ' returns -1 '
String.Compare("B", "A", true) ' returns 1 '
String.Compare("B", "B", true) ' returns 0 '
在您的情况下,如果您将用户名排在“ImageButton1
之前,如果您将其排序为列表,则medev"
将被禁用。因此"Adam"
已将其禁用,"Stuart"
1}}会启用它。"medev"
也会禁用它,因为如果字符串相等,String.Compare会返回0
。我的猜测是你希望ImageList1
启用{ {1}}:
"medev"
我还建议使用String.Compare
重载,它使用StringComparison
代替bool来获得不区分大小写的比较。在我看来,它使得理解代码的功能变得容易得多:
If String.Compare(string1, string2, True) <> 0 Then
ImageButton1.Enabled = False
End If
答案 1 :(得分:0)
如果字符串相等,则String Compare返回0。为了评估真实的变化,你的比较为= 0而不是&lt;&gt; 0
If String.Compare(string1, string2, StringComparison.InvariantCultureIgnoreCase) = 0 Then
如果您经常设想执行此类检查以显示页面的不同部分,您可能希望根据您期望的用户的不同类型(或级别)来中断您的页面,并在登录时将它们重定向到特定页面。根据用户之间的相似程度,您可能会发现使用master pages和/或user controls是有益的。
答案 2 :(得分:0)
这是有效的!
ImageButton1.Enabled = Not Session("UserName") Is Nothing AndAlso Session("UserName").ToString.ToLower.Trim.Equals("username")
ImageButton2.Enabled =非会话(“UserName”)没有AndAlso_ Session(“UserName”)。ToString.ToLower.Trim.Equals(“username”)