迷惑问题---关于页面重复刷新
在项目中遇到的奇怪问题:
一个最简单的页面,有一个服务端text控件:TextBox1,显示刷新次数;
一个HTML表格;
提交页面时,会重复刷新,这是为什么呢?
代码如下:
.aspx文件:
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 122px; POSITION: absolute; TOP: 43px" runat="server"></asp:TextBox>
<TABLE>
<TR>
<TD background="#FFFFFF"></TD>
</TR>
</TABLE>
</form>
</body>
.vb文件,记录刷新次数
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim jiang As Integer
jiang = CType(Page.Session.Item("jiangtest"), Integer)
jiang = jiang + 1
Page.Session.Add("jiangtest", jiang)
TextBox1.Text = CType(Page.Session.Item("jiangtest"), Integer).ToString
End Sub
好像只有使用HTML表格且设置了其TD的background属性后才会重复刷新,请知道的朋友帮忙解释一下原因
问题点数:100、回复次数:17Top
1 楼osborne(做人要本份!)回复于 2003-12-02 19:31:44 得分 10
Dim jiang As Integer
jiang = CType(Page.Session.Item("jiangtest"), Integer)
jiang = jiang + 1
Page.Session.Add("jiangtest", jiang)
TextBox1.Text = CType(Page.Session.Item("jiangtest"), Integer).ToString
放到!Page.IsPostBackTop
2 楼yuosh(陈晨)回复于 2003-12-02 19:38:53 得分 0
我是想知道原理,能告诉我为什么吗?
那些特征的控件,在哪些情况下会重复刷新?
:)Top
3 楼kwklover(随风)回复于 2003-12-02 19:56:20 得分 50
<TD background="#FFFFFF"></TD>
这句有错吧,background=背景图片地址,bgcolor=颜色代码
其他不知道哦,我没测试过Top
4 楼xiajianfeng()回复于 2003-12-02 20:00:14 得分 10
服务器端控件的初始化都应该放在!Page.IsPostBack
它表明页面在第一次LOAD时才会被调用Top
5 楼asam2183(三山)回复于 2003-12-02 20:09:02 得分 10
只要有runat="server"标识的控件,当你提交时,都会先跑到page_load
然后再执行相应该控件的代码处理部分Top
6 楼yuosh(陈晨)回复于 2003-12-02 20:11:12 得分 0
to kwklover(随风):
代码无误呀
to xiajianfeng(权利的战车):
这个我知道,我想知道的是为什么会重复PostBack,和有哪些特征的控件,在哪些情况下会重复刷新
Top
7 楼xinshaw(清瘦卫郎)回复于 2003-12-02 20:12:59 得分 10
按钮点击后先触发 Page_Load 和 Page_Unload,所以在Load中应加入
if (!IsPostBack)
{
......
}Top
8 楼xinshaw(清瘦卫郎)回复于 2003-12-02 20:14:36 得分 10
按钮,超链等等点击都是这样Top
9 楼yuosh(陈晨)回复于 2003-12-02 20:30:57 得分 0
我知道,但你们可以试试我贴的代码,打开页面后按F5刷新,每刷新一下,它会走两遍Page_Load,TextBox1的值会加2,或者你加个WEB端button按钮,点击它刷新页面,那么它的执行顺序是:
先走Page_Load(),
然后走btn_Click(),
最后又走一边Page_Load(),问题就在这,它为什么要走呢,在走完btn_Click()后应该结束本次提交了啊!
同样,你可以把background="#FFFFFF"属性去掉,他就只走一遍Page_Load()了,谁能解释吗?
Top
10 楼yuosh(陈晨)回复于 2003-12-02 20:33:47 得分 0
去掉了background="#FFFFFF"属性后,它为什么又只走一遍Page_Load()了呢?
太多的刷新会影响效率的Top
11 楼wang_cel(哦哦)回复于 2003-12-02 20:37:26 得分 0
dingTop
12 楼gordenfl(笨笨(杨过寻找姑姑,两行泪....))回复于 2003-12-02 20:54:22 得分 0
我有个高中同学也叫陈晨!!
不知道楼主是不是新疆的??Top
13 楼smalltree822(小树)回复于 2003-12-02 21:00:19 得分 0
别在page_load里写
写在 button_click 事件里Top
14 楼yuosh(陈晨)回复于 2003-12-02 21:03:23 得分 0
不是的,我女友姓陈,我名字中有晨字,呵呵,扯远了Top
15 楼yuosh(陈晨)回复于 2003-12-02 21:10:40 得分 0
to smalltree822(小树):
在button_click()里写当然是只会执行一次session赋值操作,但page_load()还是走两次呀,WHY?Top
16 楼cnhgj(戏子) (没时间练太极)回复于 2003-12-02 22:09:20 得分 0
执行button事件是会先执行page_load事件的,你在page_load事件中写
if(!IsPostBack)
{
//不想重复执行的代码
}Top
17 楼yuosh(陈晨)回复于 2003-12-02 23:04:53 得分 0
to kwklover(随风) :
你说的对,我没注意,background=背景图片地址;
我写的background="#FFFFFF"是错的,.net编译也没出错,
我换成bgColor="#ffffff"就对了,只刷新一次。
现在看来是background="#FFFFFF"赋值错误才导致其多刷新了一次,问题虽然找到了,但是为什么写成background="#FFFFFF",asp.net不出错而只是多刷新一遍呢?
有知道的吗?Top




