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

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

  • 相关阅读:
    js获取当前日期
    Mysql错误1452
    数字输入框禁止输入字母
    laravel关联外键报错
    golang for range channel
    golang实现简单哈希表(拉链法解决冲突)
    K个一组反转链表(golang)
    golang 少见的语法问题(无用)
    golang实现循环队列
    数组中连续序列和最大值(循环数组)
  • 原文地址:https://www.cnblogs.com/YSO1983/p/1787065.html
Copyright © 2011-2022 走看看