在页面间跳转、传送消息有以下几种方式:
1,查询字符串 + Response.Redirect方法
a. 相当完全从新载入一个页面,和从地址栏中输入地址的效果是一样的。
2,跨页面回发(Cross Post)
a. 方式一:通过设置页面1中的button的postbackurl为页面2。这时,转到页面2,进入页面2的 Page_Load()方法,PreviousPage.IsCrossPagePostBack为真,IsCrossPagePostBack为假,IsPostBack为假,进入PreviousPage.IsCrossPagePostBack判断条件后,执行页面1的生命周期,页面1中的生命周期中,IsCrossPagePostBack为真,PreviousPage.IsCrossPagePostBack属性为假,IsPostBack为假。然后在页面2Unload之后,页面1Unload。
这时,给button设置Click事件执行函数,也不会去执行。
b. 方式二:在button的click函数中,使用Server.Transfer()函数,这时,由于出动页面1的按钮单击事件,页面1postback,会执行页面1的page_Load中的Ispostback条件判断,然后执行按钮点击事件,执行Server.Transfer(),页面1生命不结束,而是直接执行页面2生命周期,在页面2中, 会像第一次加载一样, ispostback, PreviousPage.IsCrossPagePostBack, IsCrossPagePostBack均为假,当页面2执行结束后,执行页面1Unload,结束页面1生命周期。
可以在某一页面中,采用完全判断:
if (PreviousPage != null)
{
if (PreviousPage.IsCrossPagePostBack){ // 这里是由postbackurl引发的 }
else { // 这里是有Server.Transfer()引发的}
}
else{
if (IsPostBack){ // 这里是有自身PostBack引发的}
else if (IsCrossPagePostBack) { // 这里是页面2调用页面1的生命周期时}
else { // 这里是 第一次加载引发的, 包括 Response.Redirect(),包括有Server.Transfer()引发的页面2全新加载}
}
欢迎访问 在找网