[英]ASP.NET: Controls are null when I try to change a property
我到底想念什么?
(開始:我正在使用登錄系統來做所有這些花哨的事情,並使用AJAX來動態地動態添加/修改控件,等等,但是我無法更改f'n靜態控件的屬性!我什至無法使用Google這樣的控件一個簡單的問題,卻找不到其他東西!過去,我不得不動態生成整個血腥的頁面,以避免出現這個愚蠢的簡單問題。
我知道這是一個古老的問題,但想了解一下我如何解決類似的問題。 我有一個用戶控件,上面帶有一個asp:Panel,試圖在Page_Load期間設置可見性,但是控件顯示為null。 然后,我注意到我的Page_Load定義如下所示:
protected void Page_Load(object sender, EventArgs e)
{
_myControl.visible = true;
}
實際上,我需要定義如下所示:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
_myControl.visible = true;
}
進行覆蓋可解決此問題。
Page.LoadControl()有兩個重載,一個重載接受虛擬路徑,另一個重載類型。 有時,當使用Type版本重載時,您會得到這種行為。
如果可能,嘗試使用LoadControl的虛擬路徑版本。
編輯:僅供參考,這是因為用戶控件的實際類型不是您期望的那樣。 ASP.NET可以“包裝”用戶控件的類型。
在分析頁面執行順序后,我想出了一種方法( http://msdn.microsoft.com/en-us/library/ms178472.aspx )。
protected void Page_Init(object sender, EventArgs e)
{
literalGameName.Text = myGame.Name;
}
初始化是在控件完成后發生的,而不是在頁面加載完控件后完成的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.