asp.net的页面加载[转]
来源:互联网 发布:淘宝金酷娃玩具五十铃 编辑:程序博客网 时间:2024/05/20 03:07
在asp.net 中,当用户向aspx页面发出请求时,web服务器会交由asp.net引擎aspnet_isapi.dll来处理。asp.net引擎会先检查输出缓冲中是否有此页页面或者有此源代码,然后由编译器编译成dll文件。编译时asp.net引擎会从page类动态派生一个新类。如果此页面已经编译,择直接建立对象,处理事件,返回客户端浏览器;如果在输出缓冲中找到页面,则直接将输出缓冲中的内容返回到浏览器。
http协议是无状态的,asp.net通过把页面的状态封装到隐藏的输入域来维护状态信息。
asp.net 载入页面的时候触发下列事件:
page_init 页面初始化时触发,事件结束后,页面初始化完成。
page_load 页面载入且页面状态恢复后,触发此事件。
page_unload 页面从内存中释放时触发。
example:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack) //判断页面是否第一次加载
{
Label1.Text = " this is first access!";
}
else
{
Label1.Text = "page post back";
}
}
protected void Page_Init(object sender, EventArgs e)
{
Label2.Text = "page init";
}
页面加载后,先执行一次page_init ,然后执行page_load ,因为时第一次加载,所以ispostback 为假,所以 执行if语句里面的操作。
当页面上的控件进行提交,造成页面刷新的时候, page_init 不再加载,而page_load 再次执行,还是判断ispostback,这次执行的是else里面的语句。
前面谈到了aspx是使用viewstate来保存网页的状态。
网页第一次加载后:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTg1NjA5MDU3MQ9kFgICAw9kFgQCAQ8P
FgIeBFRleHQFFiB0aGlzIGlzIGZpcnN0IGFjY2VzcyFkZAIFDw8
WAh8ABQlwYWdlIGluaXRkZGQSd0DJn0GzjPC73T2o9IO517OL2Q==" />
控件产生事件,造成页面刷新后:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTg1NjA5MDU3MQ9kFgICAw9kFgQCAQ8P
FgIeBFRleHQFDnBhZ2UgcG9zdCBiYWNrZGQCBQ8PFgIfAAUJcG
FnZSBpbml0ZGRk7AoaK/qplWZEe7O8glpO8wpOuSY=" />
viewstate状态已经不一样了!
如果我们仅仅是按F5键对页面进行刷新,而不是因为控件的提交进行页面刷新,再次查看Source code.
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTg1NjA5MDU3MQ9kFgICAw9kFgQCAQ8P
FgIeBFRleHQFDnBhZ2UgcG9zdCBiYWNrZGQCBQ8PFgIfAAUJcG
FnZSBpbml0ZGRk7AoaK/qplWZEe7O8glpO8wpOuSY=" />
和上次的一样,所以单纯的页面刷新并不会改变网页的状态。
Tips:有时候在设计数据库程序时,不小心多刷新了一次页面,很可能造成数据库的重复插入新记录。
解决办法可以是--插入新记录成功后,立刻重定向本页到当前页面
也可以用一个session来保存前一个viewstate,和当前的viewstate做比较,如果一样,则不必进行数据的再次保存,表明网页没有变化。
- asp.net的页面加载[转]
- asp.net 页面加载
- asp.net页面的加载顺序
- asp.net的页面加载顺序
- asp.net的页面加载顺序
- Asp.net实现页面加载
- asp.net 局部页面加载
- ASP.NET页面加载顺序
- ASP.NET页面加载顺序
- ASp.net页面加载过程
- 关于asp.net中页面事件加载的先后顺序
- 关于asp.net中页面事件加载的先后顺序
- 关于asp.net中页面事件加载的先后顺序
- ASP.NET动态加载用户控件的页面生成过程
- asp.net中页面事件加载的先后顺序
- asp.net中页面事件加载的先后顺序
- 关于asp.net中页面事件加载的先后顺序
- 关于asp.net中页面事件加载的先后顺序
- 71种网络故障及解决办法一览
- 用VC编写的SN快速输入工具
- NET commend
- 电脑经常出现EXPLORER.EXE产生了错识
- 一个可以禁用USB存储设备的程序(SetupAPI的使用方法)
- asp.net的页面加载[转]
- ASP.NET Web 页面生命中的一天[转]
- 学习不是一天两天
- [原创]修炼之道
- 《Microsoft Windows 2000 服务器端编程》 -- 前言
- 《Microsoft Windows 2000 服务器端编程》 -- 第一章:服务器程序的开发准则
- 基于窗体的身份验证
- 卷首语:
- NUnit学习笔记 VS.net 2005篇