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

会话验证母版页(?)asp.net c#,c#,asp.net,C#,Asp.net,我有一个有两个按钮的空白页 第一个按钮的点击代码如下: Session["permissionUser"] = "1"; 下面是第二个按钮代码: Session["permissionUser"] = "2"; 然后我有一个超链接重定向到“主”网站 我的目标是根据会话中保存的权限调整母版页上的菜单栏。以下是我在母版页中的部分代码: <body> <div id="menuBar"> <a href="../Default.aspx">Home</a&

我有一个有两个按钮的空白页

第一个按钮的点击代码如下:

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(取决于我单击的按钮)


我真的看不出我做错了什么,所以如果你们有任何建议,我将非常感激

事实上,我会在if声明中更加具体

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

使用空检查

<% if (Session["permissionUser"] != null && Session["permissionUser"].toString() == "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>

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

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

<>这将允许您更好地控制和调试您的值。

我将调试并确保会话变量包含预期值,您应该考虑使用和修改DOM。分离关注点和更干净的代码。我在单击按钮后使用了响应。写入会话变量,它包含值。但是,当我点击另一个超链接时,它根本没有适应——可能会发布更多的代码?或者我会将会话值转换为字符串。ie(字符串)会话[“permissionUser”]至少必须添加一个空检查,然后它才能工作,但我的意思是。我以前的代码出了什么问题?在我看来,一切都很好,应该很好用。是 啊不到一周前,我刚开始使用asp.net c,在此之前我一直在使用php,所以。。谢谢,伙计
if (Session["permissionUser"] == 1)
{
  hyperlink1.NavigateUrl = "#"
  hyperlink1.Text = "Permission 1 link"
}...