簡體   English   中英

asp.net中的視圖狀態和自定義控件

[英]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.

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