用户登录会话变量已过滤

时间:2009-07-21 22:40:15

标签: asp.net vb.net

我正在尝试将会话变量与另一个字符串进行比较,以便我可以启用或禁用图像按钮。我正在使用带有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

3 个答案:

答案 0 :(得分:1)

String.Compare会返回-101,具体取决于结果:

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”)