Asp.net 如果登录的用户不是管理员,我们想隐藏管理员链接。知道我的代码为什么不是';不行吗?

Asp.net 如果登录的用户不是管理员,我们想隐藏管理员链接。知道我的代码为什么不是';不行吗?,asp.net,vb.net,Asp.net,Vb.net,从下面的标记中可以看到,共有5页 <ul> <li><a href='Default.aspx'>Home</a></li> <li><a href='vidpresentations.aspx'>Training Materials</a></li> <li><a href='myAccount.aspx'>My Account</a></li&

从下面的标记中可以看到,共有5页

<ul>
<li><a href='Default.aspx'>Home</a></li>
<li><a href='vidpresentations.aspx'>Training Materials</a></li>
<li><a href='myAccount.aspx'>My Account</a></li>
<li class='selected'><a href='trainingPage.aspx'>Training Page</a></li>
<li runat="server" id="divAdmin"><span><a href='admin.aspx'>Administration</a></span></li>
</ul>
每个页面都有标记中显示的链接

其中一个链接是我们管理页面的admin.aspx

如果用户登录,并且他或她的角色不是管理员(1),则我们希望隐藏管理员链接

我没有得到一个错误,但链接没有被隐藏

如果更容易禁用链接,我们不会介意使用该路径


非常感谢您的帮助。

变量可能必须转换为int,因为比较可能是对象或字符串与整数1的比较,而整数1可能不是预期的比较

IOW:


可能为false。

变量可能必须强制转换为int,因为比较可能是对象或字符串与整数1的比较,而整数1可能不是预期的比较

IOW:

很可能是错误的。

请尝试使用:

If Session("UserRole").ToString() = "1" Then
    divAdmin.Visible = True
Else
    divAdmin.Visible = False
End If

关于你的另一个问题:

您可以将class属性添加到
li
标记中

<li runat="server" id="divAdmin" class="hide">...</li>
其中show=可见性:在css中可见。

尝试使用:

If Session("UserRole").ToString() = "1" Then
    divAdmin.Visible = True
Else
    divAdmin.Visible = False
End If

关于你的另一个问题:

您可以将class属性添加到
li
标记中

<li runat="server" id="divAdmin" class="hide">...</li>

其中show=visibility:在css中可见。

我建议将控件的可见性设置为false,然后仅在检测到用户是管理员时显示它。这样,如果出现这样的错误,链接不会显示给所有用户

您可以如下设置visiblilty默认值:

<li runat="server" visible="false"  id="divHideThis" >blerg</li>

我建议将控件的可见性设置为false,然后仅在检测到用户是管理员时显示它。这样,如果出现这样的错误,链接不会显示给所有用户

您可以如下设置visiblilty默认值:

<li runat="server" visible="false"  id="divHideThis" >blerg</li>

这是VB,我认为没有==运算符同时扮演这两个角色。这很奇怪,如果我在IDE中键入==,它会显示一个错误。我当然不是专家,但我认为你链接到的参考页面是错误的。我不是VB专家,但我怀疑会话(“UserRole”)需要转换为int。这是VB,我认为没有==运算符同时扮演这两个角色。这很奇怪,如果我在IDE中键入==,它会显示一个错误。我当然不是专家,但我认为你链接到的参考页面是错误的。我不是VB专家,但我怀疑会话(“UserRole”)需要强制转换来完成调试器的单步调试,或者删除“if”语句并只设置divAdmin.Visible=False,以确保这就是问题所在。也许您的if语句的行为与您认为的不一样,它是调试程序的第二步,或者删除“if”语句并只设置divAdmin.Visible=False,以确保这就是问题所在。也许您的if语句的行为不像您认为的那样,所以将其转换为int,然后看看是否有效。你证明了哪一行代码没有按预期运行吗?好吧,我现在看起来很蠢。请原谅我。它确实有效。问题是我以管理员身份登录。因此,自然,它将是可见的。我应该问的问题是,我如何使它最初隐藏起来,更倾向于标记,并通过正确的角色变得可见。我真诚地道歉。所以将它转换为int,看看是否有效。你证明了哪一行代码没有按预期运行吗?好吧,我现在看起来很蠢。请原谅我。它确实有效。问题是我以管理员身份登录。因此,自然,它将是可见的。我应该问的问题是,我如何使它最初隐藏起来,更倾向于标记,并通过正确的角色变得可见。我真诚地道歉。
For i As Integer = 0 To Session.Contents.Count - 1
    Response.Write(Session.Keys(i) + " - " + Session(i) + "<br />")
Next

For Each key As String In Session.Keys
    Response.Write(key + " - " + Session(key) + "<br />")
Next