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

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

  • 相关阅读:
    tomcat中配置https服务
    https无法下载
    将页面导成excel
    如何用sql语言只获得数据库当前日期,且格式为"yyyymmdd"?
    一个测试webservice服务的工具
    java中相对路径,绝对路径问题总结(转)
    Hadoop: I/O操作中的数据检查
    Java中Array.sort相关方法
    数据的I/O序列化操作
    Java中Comparable和Comparator实现对象比较
  • 原文地址:https://www.cnblogs.com/YSO1983/p/1787065.html
Copyright © 2020-2023  润新知