Asp.net 如果登录的用户不是管理员,我们想隐藏管理员链接。知道我的代码为什么不是';不行吗?
从下面的标记中可以看到,共有5页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&
<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