簡體   English   中英

仍在呈現隱形控件

[英]Invisible controls still being rendered

我遇到了最棘手的問題。

我在Master Page中有兩個PlaceHolders; 一個包含已注銷用戶的控件,另一個包含已登錄用戶的控件。

他們是:

plhLoggedOut

plhLoggedIn

在我的Page_Load(主頁面)中,我設置了它們的可見性:

        //LOGGED-IN?
        plhLoggedOut.Visible = (app.UserID == 0);
        plhLoggedIn.Visible = (app.UserID != 0);

但是,仍在呈現兩個PlaceHolders的內容。

我甚至將其可見性寫入狀態消息,並且該狀態消息確認在任何給定時間只有一個可見。 例如,

plhLoggedOut.Visible == True; plhLoggedIn.Visible == False  

任何想法如何發生(以及如何解決)?

非常感謝,

邁克爾

也許在您的代碼中的其他位置,您將這些面板的父控件設置為可見,這會破壞所有子項並將它們設置為可見。 您需要更改代碼,以便在其父控件之后設置plhLoggedOut和plhLoggedIn可見性。

我剛刪除了舊的PlaceHolders並創建了兩個具有不同ID的新的PlaceHolders。 然后它開始工作了。

我依稀記得之前有類似奇怪的行為,由於某些原因,代碼隱藏和標記斷開連接。 這可能是因為我不使用可視化設計器,並手動編寫.NET標記和designer.cs文件。

僅供參考,slolife,我剛測試它,並且可見性不會像從父控件到子控件那樣傳遞下來。 即使將容器的可見性設置為true,也可以嵌套隱藏的控件,該控件保持隱藏狀態。

感謝大家,

邁克爾

你打電話也試試

<asp:PlaceHolder ID="plhLoggedOut" runat="server" Visible="<%# app.UserID == 0 %>" />

<asp:PlaceHolder ID="plhLoggedIn" runat="server" Visible="<%# app.UserID != 0 %>" />

然后對它們進行數據綁定以使表達式得到評估。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM