关于textbox属性text赋值问题?

kingstaron 2011-03-25 11:24:55
protected void Page_Load(object sender, EventArgs e)
{
string txt1 = TextBox1.Text;
}

protected override void OnInit(EventArgs e)
{
string txt = TextBox1.Text;
}
在OnInit时 TextBox1.Text还没有得到前端输入的值 在Page_Load时拿到值了 这是啥机制?

TextBox1.Text在页面周期的哪个阶段赋值了啊?

TextBox1.Text是在某个阶段用request.form["前端文本框name"]这样的形式赋值的吗?
...全文
826 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
神码浮云 2011-03-26
  • 打赏
  • 举报
回复
ASP.NET网页生命周期事件(表)2011-03-20 16:27网页事件
典型的使用方式

PreInit
PreInit事件是网页生命周期中非常早起的一个事件,在PreInit事件触发之后,就会加载用户设置信息与网页主题。我们通常使用PreInit事件来执行下列处理:

l 检查IsPostBack属性,来确认网页是否为第一次被处理。

l 创建或重新创建动态控件。

l 动态设置一个母版页。

l 动态设置Theme属性。

l 读取或设置用户设置文件属性值。

Init
在所有的控件都已经被初始化,而且所有的面板设置都已经应用之后,就会触发Init事件。可以使用此事件来读取或初始化控件属性。

InitComplete
此事件由Page对象触发。当网页初始化完成之后,就会触发此事件。

PreLoad
如果希望在Load事件触发之前,针对您的网页或控件执行一些处理,就可以使用此事件。在Page触发此事件之后,它会加载它本身与所有控件的视图状态,然后处理Request实例的回发数据。

Load
Page会调用Page上的Load事件处理例程,然后按照顺序为每一个子控件执行相同的操作,直到网页与所有控件被加载为止。我们通常会使用Load事件来设置控件的属性并创建数据库连接。

控件事件
我们通常使用控件的各个事件来完成各项互动操作。

LoadComplete
在网页上的所有其他控件都已经被加载之后,要执行的处理就可以通过此事件来完成。

PreRender
在控件已经被加载但是还没有解释之前,就会触发此事件。在此事件之前会执行下列操作:

l Page对象会调用网页与每一个控件的EnsureChildControls方法。

l DataSourceID属性被设置的数据绑定控件会调用其DataBind方法。

网页上的每一个控件都会触发PreRender事件,您可以利用它对网页或其控件的内容做最后的更改。

SavaStateComplete
在已经为网页和网页上的所有控件保存了视图状态与控制状态信息后,就会触发此事件。此时对网页与控件所作的任何更改都会被忽略。

如果您的操作是要在视图状态被保存之后才执行,则非常适合使用SaveStateComplete事件,但是请不要对控件进行任何更改。

Render
Render不是一个事件,而是一个方法。在此阶段,Page对象会调用每一个控件的Render方法。所有的ASP.NET服务器控件都拥有一个Render方法,它会输出要传送给浏览器的控件标记。当我们创建一个自定义控件时,通常会重写Render方法来输出控件的标记。然而,如果您的自定义控件仅仅是标准的ASP.NET服务器控件,而没有任何的自定义标记,则不需要重写Render方法。

Unload
每一个控件的Unload事件被触发之后,才会触发网页的Unload事件。对于控件而言,我们会使用此事件为特定的控件进行最后的清理工作,比方说,关闭某控件所使用的数据库连接。

对于网页本身而言,同样会使用此事件来进行最后的清理工作,比方说,关闭已打开的文件与数据库连接、完成记录写入操作等。
酷儿 2011-03-25
  • 打赏
  • 举报
回复
在你触发事件之后赋值的
ZhuZhuYuXiang 2011-03-25
  • 打赏
  • 举报
回复
OnInit 初始化,Load加载,
在Init发生的时候,没有任何动态装载控件,仅仅装入了设计器上“写死”的控件。并且没有任何状态ViewState值,没有任何客户端post值。Init仅仅是说明那些写死的控件已经装载。例如页面上设计有DataGrid,在Init的时候DataGrid控件已经存在但是没有任何Item也没有任何正确的PageSize等属性值。例如页面上设计有TextBox,在Init的时候虽然已经存在Init,但是没有那些基于动态ViewState的属性,更没有客户端最新的Text值。

在Load发生的时候,对于那些动态状态的控件,上述一切已经齐备。对于动态装载的控件,如果是写在CreateChildControls方法中的,也已经齐备。对于那些喜欢写在load中动态装载的控件,则只有状态会立即填入,而客户端post值必须等Load结束之后才能填入。

很难说为什么有这样的设计。我估计本来的设计是应该在CreateChildControls方法中创建子控件,在Load中是在所有控件初始化完成准备触发业务逻辑事件之前给客户程序一个通知。而很多人把动态控件滚利偏要写在Load中,最后只好将错就错,考虑将Load中动态装载的控件在Load结束之后再额外处理一次。

而很多人把动态控件滚利偏要写在Load中 --> 而很多人把动态控件创建偏要写在Load中

由界面触发业务逻辑的部分,要在控件的事件中完成,例如在xxxx_Changed、xxxx_click或者xxxx_Selected事件中完成,而不要在Load中完成。asp.net在Load事件通知已经装载完成之后,实际还要进行一个增量的动态控件的最后装载(post值)的动作(但是对于一般人的程序往往在Load之前已经完成了90%的装入动作了),之后又用LoadComplete来再次通知装入完成,与java、delphi中那些类似的号称干净、高级的框架相比,明显有为了市场因素而故意放慢速度多做一些兼容性处理的意思。

子夜__ 2011-03-25
  • 打赏
  • 举报
回复
OnInit 初始化

参考

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧