【发布时间】:2010-12-12 06:39:17
【问题描述】:
在我的代码中,我在 page_load 事件中加载了一个用户控件 (uc)。 uc 包含一个将标签文本设置为文本框值的按钮。 (lblTest.Text = txtText.Text)。这在我的页面的加载事件中工作正常。但是当我在我的 Init 事件中设置 uc 的加载时,标签没有设置。当我设置断点时,我看到按钮事件被触发,文本被设置(在代码中),但是当页面完成加载时,标签是空的。这怎么可能?
【问题讨论】:
在我的代码中,我在 page_load 事件中加载了一个用户控件 (uc)。 uc 包含一个将标签文本设置为文本框值的按钮。 (lblTest.Text = txtText.Text)。这在我的页面的加载事件中工作正常。但是当我在我的 Init 事件中设置 uc 的加载时,标签没有设置。当我设置断点时,我看到按钮事件被触发,文本被设置(在代码中),但是当页面完成加载时,标签是空的。这怎么可能?
【问题讨论】:
进一步检查代码以确保控件的文本没有被覆盖或设置回空文本。 (具体来说,请进一步查看 Page_Init、Page_Init 调用的函数以及 Page_Load 及其调用的函数。)
如果您看到它在调试器中被设置为您期望的值,那么很可能是其他东西在事后对其进行了更改。这将是您的代码、ViewState 或您的 立即 控件之外的其他内容。找到它,你应该可以做点什么。
【讨论】:
我不认为控件完全存在于 init 中。
本文解释了页面事件周期,并可能解释您遇到的问题: http://www.15seconds.com/issue/020102.htm
【讨论】:
进一步详细说明其他答案。
每当一个 ASP.Net 站点启动时,都会以非常特定的顺序发生五件事。阅读 Luke 的链接以找出该顺序并相应地绘制。
【讨论】: