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();
           
            }
    解决问题

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

  • 相关阅读:
    技术列表
    常用软件开发工具
    EXCEL数据导入SQL2008相关操作
    点点滴滴
    揪出ASP.NET 2.0四大“插件”的总后台 ASPNETDB
    古人说
    好点子都是偷来的:史上最感性的60堂创新课读书摘要
    我是怎么割韭菜的:一个骗子的悔过与自白读书摘要
    人生如我读书摘要
    德米安:彷徨少年时读书摘要
  • 原文地址:https://www.cnblogs.com/YSO1983/p/1787065.html
Copyright © 2011-2022 走看看