簡體   English   中英

ASP.NET:當我嘗試更改屬性時,控件為空

[英]ASP.NET: Controls are null when I try to change a property

  1. 創建了一個用戶控件。
  2. 在用戶控件中,我在標記中有一個簡單的控件,如Literal。
  3. 在用戶控件的Page_Load中,我嘗試在標記中創建的控件上更改諸如Text之類的屬性。
  4. 控制為空。

我到底想念什么?









(開始:我正在使用登錄系統來做所有這些花哨的事情,並使用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.

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