文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>ASP.NET进阶(2):IsPostBack和BindForm

ASP.NET进阶(2):IsPostBack和BindForm

时间:2010-09-07  来源:麦子君子兰

说明:本文里会使用InputId为控件的ID,InputName控件的name,InputId.Text控件的值,UrlPramaName Url参数名,BindForm()绑定表单的方法。以后还会使用一些伪代码,和这种“未声明”的代码。尽量单词达意。

Request.Form

可能有同学会问为什么你用Request.Form["InputName"]啊,我们都是用InputId.Text,我们只是用Request.QueryString["UrlPramaName"]来获取Url的参数值。 事实上,这两种方式都是可以的,而且通常控件生成的Html代码里Id和Name值也都是一样的(其实这并不好,以后会讲)。当点击提交按钮后,页面被重新加载,并且给控件赋了值。所以,InputId.Text就可以获取到具体控件的值。

问题是控件是被怎么赋值的?你知道吗?

IsPostback

为什么页面第一次加载的时候IsPostback是false,而提交之后变成了true,我们上节不是说post也是页面请求吗,怎么两次请求,IsPostback值却有变化呢?
当我们的form被提交后,浏览器会帮我们把form里的控件的值post到form的action所指向的页面(一般也是本身页面)。这时,IIS收到请求和Post数据后,便会知道是提交数据,而不是像第一次打开(刷新其实和第一次打开是一样的),没有数据。所以,后台类(PageName.aspx.cs)在执行过程中的时候会把IsPostback设置为true! “Is Post Back”的含义即是“是否提交后(的请求)”的意思。 

所以往往我们写按钮的Click事件时,在Page_Load方法里经常会 if(!IsPostBack) BindForm();//给表单所有控件赋值的方法。意思是提交后我就不绑定表单了,而是走Click的具体事件方法。

为什么刷新的时候按钮没有执行click事件,而提交后就可以了呢? 因为第一次加载(普通请求)的时候按钮的Click事件没有订阅方法,而点击提交后,按钮的Click事件订阅了具体的事件方法。就像IsPostback一样,相当于按钮的成员被赋值了。

BindForm

【注意】为什么不再绑定表单? 其实逛逛CSDN,大家会发现很多人都会问一个问题————为什么他明明修改了控件的值,但是提交后数据没变呢? 然后很多人回帖说,加一个IsPostback判断! 你知道为什么要加了吗? 呵呵,因为如果再次执行bindform的话,控件的值会被重新赋值,那么你再运行按钮事件时就会取到旧的值。
那么,为什么我不执行BindForm,form的控件依然被赋值呢? 这不是很奇怪? 呵呵,其实这当然是有值的了,不然你在往数据库写记录的时候InputID.Text 的数据哪里来的,而且你的BindForm不外乎就是给InputId.Text = "xxx" 赋值么 :)。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载