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

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

  • 相关阅读:
    sqlserver 角色
    SqlServer 连接字符串多种配置
    SqlServer Link 链接服务器的使用
    web.config 加密/解密
    C# 设置开机自动启动(注册表方式)
    mono 3.4.0 make install的时候出现"找不到 Microsoft.Portable.Common.targets 文件”的错误提示解决方法
    Jexus V5.5.1 在linux的使用方法
    WCF 客户端解决大数据量传输配置
    POPTEST培训:web自动化测试之DOM
    自动化测试培训:设计和实现分布式QTP调用
  • 原文地址:https://www.cnblogs.com/YSO1983/p/1787065.html
Copyright © 2011-2022 走看看