网页教程的分类: .Net编程  Asp编程  Mssql数据库  Mysql数据库  Access数据库  Xml编程  DreamWeaver教程  FireWorks教程  Flash动画教程
网页教程的分类: FrontPage教程  HTML基础教程  PhotoShop教程  动态网站制作  网页设计心得
你现在的位置:首页 >> 网页教程 >> .Net编程 >> 正文
文章标题:  近期的几个asp.net开发经验总结和收集
浏览: 来源:网络 作者:admin 发表时间:2008-6-23
一:页面中page_load事件 和 page.ispostback执行两次的原因.
原因一:
当<%@page....中没有autoeventwireup定义时会导致page_load执行两次,如果有定义,且值为true时,在ispostback中动态绑定控件等情况也会导致页面load事件发生两次..因此,个人推荐不要忽视autoeventwireup,且建议设置其值为 false;
原因二:
当页面中有<img src="">时,也可能会导致page_load执行两次,解决方法:我也唔知.

二:oninit与onload
个人理解:如果页面禁用了视图或者逻辑过程中没有用到视图或者没有必要回发数据的话,可以直接重写onload方法,而不用再写oninit方法,因为oninit()之后还有进行一些视图方法的操作及回发数据的处理.因此直接onload效率会高一些.

三:远程服务器返回500错误
过程中需要从远程服务器下载文件到本地.可一直报远程服务器返回500错误.检查来检查去,结果错误发生在本地:
原因:页面以ansi编码保存,而本地完全路径中有中文字符,导致路径不能被程序有效识别.
解决方法:将页面编码更换成utf-8即可.vs系列中可通过高级保存选项更改.

四:response.end,response.redirect等导致"正在中止线程"的问题
如果是response.end(),可用httpcontext.current.applicationinstance.completerequest()来代替(据个人测试,貌似使用这句后,后边不能再有程序执行,否则仍然会继续执行下去?)
对于response.redirect()可用其重载方法:response.redirect(string,bool)
当然,server.execute(),server.transfer()情况也类似.

附上asp.net页面的生存周期(看明白了就知道为何有时只需要onload,而不需要oninit了)
____
一:初始化init:初始化对象--init事件(oninit方法)
二:加载视图状态:loadviewstate方法
三:处理回发数据:loadpostdata方法---实际上这一步只是加载,并没有做其它的处理.
---实现该方法的控件要继承自ipostbackdatahandler接口,该接口有loadpostdata和raisepostbackdatachangedevent两个方法
四:加载load:---load事件(onload方法)---该过程中所有对象都已经被实例化了..
五:发送回发更改通知:raisepostbackdatachangedevent方法
六:处理回发事件:ipostbackeventhandler接口的raisepostbackevent方法.
七:预呈现:onprerender方法(prerender事件)
八:保存视图状态:saveviewstate方法
九:呈现:render方法(--不再有对应事件)
十:处置,回收资源:dispose方法
十一:卸载:unload事件(onunload方法)..
---------page是从control继承的,因此它也是一种特殊的控件!
页面标签: asp.net  开发  经验  
下一页: 没有了!
网友评论:  近期的几个asp.net开发经验总结和收集

网友留言

暂无留言!

本栏热门
本站推荐
热评文章
广告信息