当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 近期的几个ASP.NET开发经验总结和收集

ASP.NET
从一个舆论调查的制作谈面向对象的编程思路(二)
从一个舆论调查的制作谈面向对象的编程思路(三)
从一个舆论调查的制作谈面向对象的编程思路(四)
从一个舆论调查的制作谈面向对象的编程思路(五)
c#写的五子棋程序,供学习WinForms的鼠标事件和使用GDI+
我对.Net技术中asp.net应用的一点看法
ASP.NET连SQL7接口源代码
ASP.NET中密码保护,MD5和SHA1算法的使用
微软的远程处理框架.NET Remoting - 1
微软的远程处理框架.NET Remoting - 2
黑客写出了针对.Net平台的反编译器
在config.web中保存数据库连接串
在ASP.Net中两种利用CSS实现多界面的方法
ASP.NET中如何调用存储过程
ASP.NET中取代ASP的RS(Remote Scripting)技术的Framework
刚学ASP.Net,学了个简单的计算器
ASP.NET 链接数据库基础
一个简单的加密/解密方法
加入身份验证信息的SMTP mail发送
webconfig的设置节点说明

近期的几个ASP.NET开发经验总结和收集


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 183 ::
收藏到网摘: n/a

一:页面中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继承的,因此它也是一种特殊的控件!