『本文系我自己看书做的笔记,有些是靠我弱智的英语自己看后做的笔记,难免有错误,日后也可会随时更改.大家发现错误可以指出,但少点嘲笑.各位看官请选择性收看.谢谢您的光临.』
我们已经知道了,通常我们在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.