Using the Page.IsPostBack Property

『本文系我自己看书做的笔记,有些是靠我弱智的英语自己看后做的笔记,难免有错误,日后也可会随时更改.大家发现错误可以指出,但少点嘲笑.各位看官请选择性收看.谢谢您的光临.』


我们已经知道了,通常我们在Page Load的事件处理函数中,初始化属性及组件.
这样的话就存在一个问题,当再次请求这个页面的时候,Page_Load方法都会被触发,那么,再一次的初始化上一次初始化的内容?(这时候上次初始化的内容已经保存在ViewState中了)这样,Page_Load中的多次初始化就成了多余.

这就需要Page类中的IsPostBack属性去判断页面是否被发送过(请求过?)

 

 

当页面第一次被加载时,Page.IsPostBack的值为false,初始化DropDownList组件.
当第二次加载页面时,Page.IsPostBack的值为true,则跳过初始化的语句了.


这里如果去掉Page.IsPostBack的判断,则会发生个很奇怪的现象:每次请求页面,DropDownList的默认选择到第一项,不管你曾经选择到第几项了.这说明你选择后其实已经保存了你的选择到ViewState中了,但是当再次请求这个页面,包含ViewState的请求再次发送的服务器,首先用ViewState里面的值设置组件与各属性,再执行Page_Load方法.又因Page_Load中没有了IsPostBack的判断,导致再次初始化了DropDownList组件.

在InitComplete事件后ViewState开始加载并操作,之后才抛出Page_Load事件并进行处理.
还记得页面的生命周期吗. Handling Page Events.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值