会话验证主页(?)
本文关键字:主页 验证 会话 | 更新日期: 2023-09-27 18:03:37
空白页上有两个按钮
第一个按钮的点击代码如下:
Session["permissionUser"] = "1";
第二个按钮代码:
Session["permissionUser"] = "2";
,然后我有一个超链接,重定向到"主"网站。
我的目标是根据会话中保存的权限来调整母版页上的菜单栏。下面是我在主页中的部分代码:
<body>
<div id="menuBar">
<a href="../Default.aspx">Home</a>
<% if (Session["permissionUser"] == "1"){ %>
<a href="#">PERMISSION 1 LINK</a>
<% } %>
<% if (Session["permissionUser"] == "2"){ %>
<a href="#">PERMISSION 2 LINK</a>
<% } %>
</div>
<div id="content">
<asp:ContentPlaceHolder ID="websiteContent" runat="server"></asp:ContentPlaceHolder>
</div>
</body>
问题是当我运行应用程序时,即使我点击任何按钮,菜单也根本不适应。它只显示了超链接"Home",而不是任何其他应该显示的,因为会话是1或2(取决于我点击了哪个按钮)
我真的看不出我做错了什么,所以如果你们有任何建议,我将非常感激
你的代码很php。也就是说,它很丑。和笨拙。让我们把代码中的逻辑放在后面。我们还需要一个表单,这样我们就可以在服务器上运行控件。
public void Page_Load(object sender, EventArgs e)
{
//you should probably also check to make sure the session has "permissionUser" in it
if (Session["permissionUser"] == "1")
{
Permission1HL.Visible=true;
}
else if(Session["permissionUser"] == "2")
{
Permission2HL.Visible=true;
}
}
把你的ASPX页面改成这个
<body>
<form runat="server">
<div id="menuBar">
<a href="../Default.aspx">Home</a>
<asp:HyperLink runat="server" id="Permission1HL" Text="Permission 1 Link" Visible="false" />
<asp:HyperLink runat="server" id="Permission2HL" Text="Permission 2 Link" Visible="false" />
</div>
<div id="content">
<asp:ContentPlaceHolder ID="websiteContent" runat="server"></asp:ContentPlaceHolder>
</div>
</form>
</body>
我建议您制作一个服务器端超链接控件,并从代码后面设置文本和navigateurl
<asp:HyperLink id="hyperlink1"
NavigateUrl="http://mydefaulturl.com"
Text="DefaultText"
runat="server"/>
from code behind:
if (Session["permissionUser"] == 1)
{
hyperlink1.NavigateUrl = "#"
hyperlink1.Text = "Permission 1 link"
}...
我应该在if语句中更具体一些
<% if (Session["permissionUser"].toString() == "1"){ %>
带有null检查
<% if (Session["permissionUser"] != null && Session["permissionUser"].toString() == "1"){ %>