zoukankan      html  css  js  c++  java
  • 改变ascx的pageLoad和页面的pageLoad执行顺序(转)

    今天做东西遇见一个问题,为了节省开销,需要获取一个用户控件的属性值显示在页面上

    但是ascx的赋值是在 Page_Load(object sender, EventArgs e)中进行的,

    test.ascx.cs:
    public int PageSize
            {
                get;
                set;
            }

            public void Page_Load(object sender, EventArgs e)
            {
                PageSize = 10;
            }


    test.aspx:
        <uc1:Test ID="ascxTest" runat="server" />
        <asp:Literal ID="pageLtr" runat="server"></asp:Literal>
    test.aspx.cs:
            protected void Page_Load(object sender, EventArgs e)
            {
                pageLtr.Text = "最后输出:"+ ascxTest.PageSize.ToString();
            }

    结果:
    最后输出:0

    原因:用户控件的page_load事件在页面的page_load事件之后

    从网上找了找,解决方法修改test.ascx.cs将其Page_Load方法改为public
    修改test.aspx.cs为:
           protected void Page_Load(object sender, EventArgs e)
            {
                ascxTest.Page_Load(null, null);
                pageLtr.Text = "最后输出:"+ ascxTest.PageSize.ToString();
            }
    结果:
    最后输出:10

    问题解决了吗?
    调试了下,发现ascx的pageload事件执行了两次,我们的本意是为了节省开销,这样的话不是没有任何意义吗?

    最后修改test.aspx.cs
            protected void Page_Load(object sender, EventArgs e)
            {
                ;
                ;
            }
            protected void Page_PreRender(object sender, EventArgs e)
            {
                pageLtr.Text = "最后输出:" + ascxTest.PageSize.ToString();
           
            }
    解决问题

    看来页面的生命周期真的很重要,啥时候有空了记录一下

  • 相关阅读:
    spring源码解析-ApplicationContext解析
    分布式系统的CAP理论
    Java常用设计模式详解1--单例模式
    mysql全方位知识大盘点
    重磅!微软发布 Visual Studio Online:Web 版 VS Code + 云开发环境
    知否知否,VS Code 不止开源
    webpack静态资源拷贝插件
    webpack 清理旧打包资源插件
    webpack 配置分离css插件
    webpack打包指定HTML的文件并引入指定的chunks
  • 原文地址:https://www.cnblogs.com/YSO1983/p/1787065.html
Copyright © 2011-2022 走看看