2013-10-07 39 views
3

我有一個用戶控件內的標籤:爲只讀一個標籤行爲的Visible屬性只

<asp:Label runat="server" ID="lblRemainingPlacesMessage" Visible="false" /> 

我想設置其可見性設置爲true:

protected void Page_Load(object sender, EventArgs e) { 
    lblRemainingPlacesMessage.Visible = true; 
} 

然而,標籤仍然隱藏。

什麼是我百思不得其解,是該財產不能被改變,即使在即時窗口,或調試本地觀看:

(直接窗口)

lblRemainingPlacesMessage.Visible 
false 
lblRemainingPlacesMessage.Visible = true 
true 
lblRemainingPlacesMessage.Visible 
false 

什麼可以解釋我的Visible屬性不能更改?

我也不例外。只是一個類似操作的NOOP ...

我的應用程序啓用了視圖狀態。最重要的是,我在頁面上有其他標籤,完美的工作!

不知道它的問題,但我使用動態我老闆頁面中實例化了我的用戶控件:

protected override void CreateChildControls() 
    { 
     m_VisualControl = (MyUserControl)Page.LoadControl(_ascxPath); 
     Controls.Add(m_VisualControl); 
    } 

應用程序使用ASP.Net的WebForms和.NET 3.5 SP1,和我使用Visual Studio 2012年保費。

+2

你可以發佈控件的完整aspx標記嗎?或者如果它太大 - 至少是直接標籤的父母 –

回答

0

1)你應該在創建任何動態用戶控件是OnInit,否則您將無法使用ViewState

2)公開您wan't改變爲UserControl的屬性標籤屬性

public bool HiddeMyLabel 
{ 
    set { lblRemainingPlacesMessage.Visible = value; } 
    get { lblRemainingPlacesMessage.Visible; } 
} 

3)如果你曾經使用的OnPreRender從頁面改變任何控件的屬性。

protected override void OnPreRender(EventArgs e) 
{ 
    MyUserControl.HiddeMyLabel = false; 
} 

4)如果你仍然有問題,手動刪除隱藏屬性:

1

尤里Galanter的評論讓我在正確的軌道上。

簡單地說,我的直接父母是不可見的。我想控制的可見屬性結合了控制祖先的可見性。

有時簡單的問題有簡單的分辨率:)