会话验证主页(?)

本文关键字:主页 验证 会话 | 更新日期: 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"){ %>