会话验证主页(?)asp.net c#

时间:2014-05-14 20:30:06

标签: c# asp.net

我有一个带有两个按钮的空白页面。

第一个按钮的点击代码是:

Session["permissionUser"] = "1";

这是第二个按钮代码:

Session["permissionUser"] = "2";

然后我有一个超链接,重定向到" main"网站。

我的目标是根据会话中保存的权限调整母版页上的菜单栏。这是我在母版页中的代码的一部分:

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

问题是当我运行应用程序时,即使我点击任何按钮,菜单根本不适应。它只显示超链接&#34; Home&#34;并且不是因为会话是1或2而应该显示的任何其他(取决于我点击的按钮)

我真的不知道我做错了所以如果你们有任何建议我真的很感激

3 个答案:

答案 0 :(得分:1)

您的代码非常简洁。也就是说,它很难看。而且笨重。让我们把逻辑放在代码背后。我们还需要一个表单,以便我们可以在服务器上运行控件。

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>

答案 1 :(得分:0)

我实际上在if语句

中更具体
<% if (Session["permissionUser"].toString() == "1"){ %>

使用空检查

<% if (Session["permissionUser"] != null && Session["permissionUser"].toString() == "1"){ %>

答案 2 :(得分:0)

我建议您改为使用服务器端超链接控件,并从代码隐藏设置文本和导航

<asp:HyperLink id="hyperlink1" 
              NavigateUrl="http://mydefaulturl.com"
              Text="DefaultText"
              runat="server"/>

来自背后的代码:

if (Session["permissionUser"] == 1)
{
  hyperlink1.NavigateUrl = "#"
  hyperlink1.Text = "Permission 1 link"
}...

这样可以更好地控制和调试您的值。