我認爲我的問題圍繞着我,對ASP.net中的頁面生命週期還沒有一個舒適的把握,不幸的是。我讀了很多,但它很多,抱歉!反正我嘗試做一個超級簡單的頁面作爲概念的什麼,我會在整個網站做證據,以第一,我將只是後我有:簡單的登錄頁面和動態隱藏基於會話變量的控件
ASPX:
<asp:Button ID="btnLogin" runat="server" Text="Login"
onclick="btnLogin_Click" />
<hr />
<asp:Label ID="Label1" runat="server" Text="Regular User"></asp:Label>
<asp:TextBox ID="TextBox1" runat="server">Regular User</asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Regular User" />
<hr />
<asp:Label ID="Label2" runat="server" Text="Admin"></asp:Label>
<asp:TextBox ID="TextBox2" runat="server">Admin</asp:TextBox>
<asp:Button ID="Button2" runat="server" Text="Admin" />
ASPX.CS:
protected void Page_Load(object sender, EventArgs e)
{
String admin = (String)(Session["admin"]) ?? "";
if (!admin.Equals("true"))
{
Label2.Visible = false;
TextBox2.Visible = false;
Button2.Visible = false;
}
}
protected void btnLogin_Click(object sender, EventArgs e)
{
Session["admin"] = "true";
}
所以我想要所有的隨機控件隱藏一旦用戶「成爲管理員」即會話變量的變化。我的問題是控件不會隱藏自己直接點擊按鈕後。我必須刷新或導航回來。在處理頁面生命週期問題之前,我認爲這是搞砸了,也許我只需要將可見性禁用功能放在除Page_Load之外的其他功能中?無論如何,可以有100%更好更簡單的方法來完成這個工作,我可以這麼做,只要知道 - 謝謝!
這個答案似乎很完美的意義除了一些原因,我仍然有導航離開和回來的網頁,變更到實際出現。任何想法爲什麼? – chilleo 2012-01-31 17:29:57
@chilleo由於您的默認狀態已註銷,並且您登錄時沒有任何代碼將可見性設置爲true。查看我的更新。 – pseudocoder 2012-01-31 17:45:03
哇!今天我完全失去了對不起。美麗的答案和它是有道理的,非常感謝你僞!案件關閉 – chilleo 2012-01-31 18:00:20