我有一个带有两个按钮的空白页面。
第一个按钮的点击代码是:
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而应该显示的任何其他(取决于我点击的按钮)
我真的不知道我做错了所以如果你们有任何建议我真的很感激
答案 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"
}...
这样可以更好地控制和调试您的值。