asp.net的程序都是部署在服务器上的,也就是说你在浏览器上看到的任何东西都是你像服务器发送了一个http请求,服务器经过一些处理之后再反馈给你。(.aspx.cs文件就是服务器端代码)抛开AJAX技术不谈,你打开页面之后,页面上的内容是静止不变的,只有当你刷新了一下页面或者点了页面上某个button,页面刷新了一下,页面上的内容才有可能更改,而这个更改就是你去服务器又请求了一次页面内容而已。
asp.net的回发,有点类似于这种上述的这种机制,有的回发是希望服务器重新反馈一次内容;有的回发则是希望往服务器发送一些内容。
举个例子:asp.net的textbox控件上有一个属性叫autopostback——让你设置该文本框在失去焦点时是否回发。如果你没设置,当你在文本框内填入内容,并失去焦点时,服务器这时候是不知道你填的是什么内容,之后你将表单递交了之后,服务器才会知道。如果你设置了,当你输入内容并失去焦点之后,页面就自动将文本框的内容发回给服务器了,而不需要你再去点击某些递交按钮。
有时候我们可以用这个做一个简单的数据验证操作,比如做一个注册页面,输入身份证号后,需要立即验证该身份证号在数据库里是否已经存在,那么就可以将该文本autopostback设置成true,这样一旦输入身份证并失去焦点之后,可以将该身份证号自动发送到服务器(后台)进行验证,而不需要将所有内容都填写完毕在递交的时候再进行验证。
当然这种模式,会带来页面的刷新现象,用户体验不好,因此很少用到,一般都是用AJAX来实现的。
对回发用的最多的,我觉得还是在page_load里边的判断语句,if(!ispostback){具体操作}
这样的效果等同于=如果不是回发而引起的,就执行具体操作。也就是说能保证page_load里边的代码只执行一次,而不会因为你点击了页面上的button按钮刷新了页面,而每次都会执行。