[英]Viewstate and custom controls in asp.net
我對asp.net中的viewstate和自定義控件有疑問。
假設我有一個頁面和一個簡單的復合控件。 我知道在復合控件中我必須在Page.OnInit上加載我的所有子控件,以便可以應用它們的視圖狀態並為OnLoad做好准備。
現在說我在頁面上有一棵樹,並且基於所選節點,我想加載某個自定義控件。 樹視圖的selectedNode在OnInit期間不可用,但在OnLoad及之后可用。 我也知道,如果我在頁面的OnLoad上添加一個自定義控件,那么海關控制的循環仍然是從OnInit開始,然后是OnLoad等。
所以我的問題是,如果我仍在調用自定義控件的OnInit,即使我在父級的OnLoad方法中加載此控件,為什么不為自定義控件填充視圖狀態?
是因為父級包含子級的視圖狀態,如果我從父級的OnLoad加載子級,則視圖狀態不可用?
如果您有上述情況(使用樹視圖),您通常如何加載自定義控件?
ASP.NET 確實為子控件加載視圖狀態,即使它們被添加到OnLoad
的頁面,如下例所示:
protected override void OnLoad(EventArgs e)
{
Literal literal = new Literal();
this.placeHolder.Controls.Add(literal);
if (!this.IsPostBack)
literal.Text = "I'm still here after a postback.";
}
請注意,默認情況下,ASP.NET會根據子控件的索引加載視圖狀態,因此請確保控件的順序從一個回發到下一個回發是一致的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.