加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – asp.net中的Viewstate和自定义控件

发布时间:2020-12-15 21:29:57 所属栏目:百科 来源:网络整理
导读:我对asp.net中的viewstate和自定义控件有疑问. 假设我有一个页面和一个简单的复合控件.我知道在复合控件中我必须在Page.OnInit上加载我的所有子控件,以便可以应用它们的视图状态并为OnLoad做好准备. 现在说我在页面上有一棵树,并且基于所选节点,我想加载某个
我对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会根据子控件的索引加载视图状态,因此请确保控件的顺序从一个回发到下一个回发是一致的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读