当前位置:编程学习 > C#/ASP.NET >>

关于ispostback

大概明白说初次加载的时候,该属性为false,然后可以执行if(!ispostback)下的语句,然后再次回访加载的时候不再执行这段。但是我想说的是,这个只是提高了程序的运行性能和速度吗?比如说if语句里面是绑定数据什么的内容,我如果不强求速度,再次绑定一次,会有什么不妥吗? Ispostback --------------------编程问答-------------------- 主要是为了处理页面控件的回发。如果没有这个判断,就不能区分是初始化还是应该保持控件的状态。 --------------------编程问答-------------------- 举个例子你就明白了

前台页面你入了个dropdownlist和button

你在page_load中绑定dropdownlist 值为1,2,3

然后你在前台选择dropdownlist的值为2

然后你点击button,触发button_click后台事件,要获取dropdownlist选中了哪个值

当你的page_load是这样写的:
page_load 
{
   BindDropDownList();
}
--------------------编程问答-------------------- 你button_click事件中是获取不到前台选择的2的,因为在触发button_click后台事件前,会再次触发page_load,将dropdownlist内的值重绑定回默认的1

只有这样你才能获取到真正选中的值:

page_load 
{
   if(!IsPostBack)
   {
   BindDropDownList();
    }
}

不信你试一下。  --------------------编程问答--------------------
引用 3 楼 q107770540 的回复:
你button_click事件中是获取不到前台选择的2的,因为在触发button_click后台事件前,会再次触发page_load,将dropdownlist内的值重绑定回默认的1

只有这样你才能获取到真正选中的值:

page_load 
{
   if(!IsPostBack)
   {
   BindDropDownList();
    }
}

不信你试一下。 

我不信,于是试了一下,果然很灵。 --------------------编程问答-------------------- 当年做项目时血的教训,说多了都是泪~~ --------------------编程问答--------------------
引用 5 楼 q107770540 的回复:
当年做项目时血的教训,说多了都是泪~~

+1

入门的时候都这样,不过我还算改的快的 --------------------编程问答-------------------- 这个和访问网页的两种方式有关

一个是 get
一个是 post

get就是在地址栏里输入 csdn.net/a.aspx?id=111。然后去访问这个网页

post就是 a.aspx 里面有一个表单 <form> 然后提交表单的访问。

那么在后台如何区分呢?就要用到 isPostBack 

post back  , yes or no ?

说白了,还是对bs的运作基础不了解。


--------------------编程问答-------------------- 点击了button按钮,是后台click事件先被触发还是pageload先执行? --------------------编程问答--------------------
引用 8 楼 hanhuiyu2012 的回复:
点击了button按钮,是后台click事件先被触发还是pageload先执行?


你应该搞清楚 什么是回发,什么是页面刷新

回发也是经过page_load的,但并不代表他刷新了! --------------------编程问答-------------------- 没有真正理解回发的概念 --------------------编程问答--------------------
引用 1 楼 caozhy 的回复:
主要是为了处理页面控件的回发。如果没有这个判断,就不能区分是初始化还是应该保持控件的状态。

禁用掉viewstate还能保持吗? --------------------编程问答--------------------
引用 11 楼 mh_ma 的回复:
Quote: 引用 1 楼 caozhy 的回复:

主要是为了处理页面控件的回发。如果没有这个判断,就不能区分是初始化还是应该保持控件的状态。

禁用掉viewstate还能保持吗?


如果你禁用整个页面的 ViewState,那么你就压根不应该再考虑什么控件事件编程了!

而不使用控件事件编程,是你的本意吗? --------------------编程问答--------------------
引用 7 楼 u010793151 的回复:
这个和访问网页的两种方式有关

一个是 get
一个是 post

get就是在地址栏里输入 csdn.net/a.aspx?id=111。然后去访问这个网页

post就是 a.aspx 里面有一个表单 <form> 然后提交表单的访问。

那么在后台如何区分呢?就要用到 isPostBack 

post back  , yes or no ?

说白了,还是对bs的运作基础不了解。


其实不是这样的。许多Post访问都不是回发。

对于Post访问,只有当页面上能够找到“上一次输出html时写出去的”__ViewState等信息,才知道是 Postback。否则仍然不是回发。

而对于某些Get访问,例如是按钮设置了的PostUrl而定向来的页面,其 IsPostback 也是 true。
--------------------编程问答--------------------
引用 13 楼 sp1234 的回复:
而对于某些Get访问,例如是按钮设置了的PostUrl而定向来的页面,其 IsPostback 也是 true。


嗯,Sorry,这是不对的。这是Post访问,而不是Get。

例如你用ashx轻量地产生html,或者直接用代码修改aspx的Form目标地址,都会轻易地Post数据到其它aspx。此时 IsPostback 的值都是 false。 --------------------编程问答--------------------
引用 13 楼 sp1234 的回复:
Quote: 引用 7 楼 u010793151 的回复:

这个和访问网页的两种方式有关

一个是 get
一个是 post

get就是在地址栏里输入 csdn.net/a.aspx?id=111。然后去访问这个网页

post就是 a.aspx 里面有一个表单 <form> 然后提交表单的访问。

那么在后台如何区分呢?就要用到 isPostBack 

post back  , yes or no ?

说白了,还是对bs的运作基础不了解。


其实不是这样的。许多Post访问都不是回发。

对于Post访问,只有当页面上能够找到“上一次输出html时写出去的”__ViewState等信息,才知道是 Postback。否则仍然不是回发。

而对于某些Get访问,例如是按钮设置了的PostUrl而定向来的页面,其 IsPostback 也是 true。


知道您老是牛人,知道到的多。但是……

对于新手来说,或者对于只是简单的用aspx的人来说,还是不要知道更多的情况的好。

ajax访问,还要用控件吗?还有viewstate吗?还有事件吗?

算了,还是先把单纯的页面访问搞定吧。

补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,