[英]session verification masterpage (?) asp.net c#
我有兩個按鈕的空白頁。
第一個按鈕的點擊代碼是這樣的:
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>
問題是當我運行該應用程序時,即使我單擊任何按鈕,菜單也完全不適應。 它僅顯示超鏈接“主頁”,而不顯示任何其他應顯示的超鏈接,因為會話為1或2(取決於我單擊的按鈕)
我真的看不到我在做什么錯,所以如果你們有什么建議,我將非常感激
您的代碼非常PHPish。 也就是說,這很丑。 而且笨拙。 讓我們將邏輯放在代碼后面。 我們還需要一個表單,以便我們可以在服務器上運行控件。
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>
我實際上在if語句中會更具體
<% if (Session["permissionUser"].toString() == "1"){ %>
空檢查
<% if (Session["permissionUser"] != null && Session["permissionUser"].toString() == "1"){ %>
我建議您改用服務器端超鏈接控件,並從代碼隱藏中設置文本和Navigationurl
<asp:HyperLink id="hyperlink1"
NavigateUrl="http://mydefaulturl.com"
Text="DefaultText"
runat="server"/>
從后面的代碼:
if (Session["permissionUser"] == 1)
{
hyperlink1.NavigateUrl = "#"
hyperlink1.Text = "Permission 1 link"
}...
這將使您能夠更好地控制和調試值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.