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

ASP.NET
asp.net GridView控件中模板列CheckBox全选、反选、取消
asp.net GridView 删除时弹出确认对话框(包括内容提示)
asp.net DropDownList 三级联动下拉菜单实现代码
asp DataTable添加列和行的三种方法
Asp.net 页面调用javascript变量的值
asp.net 长文章通过设定的行数分页
asp.net 定时间点执行任务的简易解决办法
asp.net 页面延时五秒,跳转到另外的页面
asp.net 动态输出透明gif图片
asp.net DataList与Repeater用法区别
asp.net Javascript获取CheckBoxList的value
asp.net程序在调式和发布之间图片路径问题的解决方法
asp.net下生成英文字符数字验证码的代码
asp.net 页面版文本框智能提示JSCode (升级版)
ASP.NET URL伪静态重写实现方法
ASP.NET 2.0 中Forms安全认证
asp.net 动态添加多个用户控件
asp.net Repeater显示父子表数据,无闪烁
asp.net 无法获取的内部内容,因为该内容不是文本 的解决方法
asp.net GridView排序简单实现

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 192 ::
收藏到网摘: 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继承的,因此它也是一种特殊的控件!