我有一个aspx页面,上面有很多TextBox,我需要向里面输入内容,然后 点击按钮,将会保存这些数据到数据库。但是,现在我在page_load里面加入了一个清空所有TextBox内容的函数,具体如下:public void page_load()
{
if(IsPostBack)//这里判定是不是第一次加载页面,如果不是就清空文本框内容
{
//清空所有TextBox内容。
}
}
现在问题是,我每次输入内容后 点击 按钮保存时,结果提示文本框中的值不能为空,
也就是说我还没来得及保存到数据库,文本框的内容就被清空了。我想 问下,难道我按了按钮以后,是先执行page_load,然后执行按钮中的事件代码,注意我这里不是说第一次页面
加载的时候,是页面已经加载好了,现在按下它上面的一个按钮。
{
if(IsPostBack)//这里判定是不是第一次加载页面,如果不是就清空文本框内容
{
//清空所有TextBox内容。
}
}
现在问题是,我每次输入内容后 点击 按钮保存时,结果提示文本框中的值不能为空,
也就是说我还没来得及保存到数据库,文本框的内容就被清空了。我想 问下,难道我按了按钮以后,是先执行page_load,然后执行按钮中的事件代码,注意我这里不是说第一次页面
加载的时候,是页面已经加载好了,现在按下它上面的一个按钮。
以后再执行就是 true了, 你if(IsPostBack) 这样 你不管操作什么 肯定先执行里面的代码清空textbox内容 你可以单独写一个函数, 然后在页面某个操作完成后 独立执行这个函数,不要放在page_load IsPostBack 里一般都是
page_load 里只有if(!IsPostBack)
{
// 第一次加载执行某些代码 以后不再执行
}其它操作单独写函数 哪个操作需要 调用即可
{
//..step0
if(IsPostBack)//这里判定是不是第一次加载页面,如果不是就清空文本框内容
{
//清空所有TextBox内容。
//..step1
}
else
{
//..step2
}
}Button_click(...)
{
//..step3
}
第一次加载:step0->step2
按钮事件:step0->step1->step3
另外我对于lz所说的“页面加载”非常敏感,深怕你乱用这个概念。当asp.net程序执行时,浏览器端干什么?什么也不干,就是你看到的短暂的延迟阶段。也就是说,Page_Load的含义就是服务器创建了一个Page控件,然后加载到asp.net中来。如果你把asp.net的Page_Load等同于浏览器端document的onload事件,就是完全南辕北辙了。每一次,不论你在浏览器端执行什么小小的操作,只要引起了回发,asp.net都要重建页面对象,然后执行各个事件,然后输出html,然后销毁这个页面对象。这就是asp.net页面对象生命周期模型。