Asp.net常见问题搜集(随时更新)
2009-03-23 23:15
302 查看
一、数据源绑定发生在哪个页面事件中?
——————————————————————解答区[b]——————————————————————[/b]
1.关于asp.net中数据绑定和相关事件的执行顺序
如果通过指定DataSourceId的方式绑定的,数据绑定将在PreRender阶段进行
控件的ItemCreated事件将会在每个条目数据绑定之前进行ItemDataBound在数据绑定完成之后进行
如果使用指定DataSource属性,然后DataBind的方式对控件进行绑定,则DataBind语句在哪个事件中,控件的数据绑定随之发生在哪个事件中
需要注意的是,当页面PostBack之后,如果控件EnableViewState==True,则会发生LoadState事件,这个时候会触发控件的ItemCreated事件
但是这个时候不进行数据绑定,e.Item.DateItem中是空的,进行相关操作的话,需要慎重考虑
对于不是使用DataBind进行手工绑定数据的控件,在EnableViewState==True的情况下,PostBack之后,不再进行数据绑定
而是从ViewState中恢复原先控件的样子.
关于在aspx中的几个脚本标记
1. <%# %> asp.net数据绑定表达式,在PreRender或者手工绑定数据的事件中执行。内容为表达式(c#中不以;结尾)
2. <% %> 在Render事件中执行,已经是最后了。内容为语句(C#中以;结尾)
3. <%= %> 在Render事件中执行。内容为表达式(c#中不以;结尾)
假如需要在执行表达式的地方,执行一批语句,可以封装到Page类的一个Public方法中
2.ASP.Net中控件和页面的相关事件
Control_Constructor
OnPreInit
Control_OnInit
OnInit
OnInitComplete
OnPreLoad
Page_Load
Control_OnLoad
OnLoadComplete
OnPreRender
Control_OnPreRender
Control_SaveViewState
Control_SaveViewState
Control_Render
Render
Control_OnUnLoad
OnUnload
注意Control_SaveViewState是在OnUnload之前的
当SaveViewState之后,你再改变什么东西的话,就无效了,无效了
postback回来,会从viewstate里面恢复回来的,像见鬼一样
在绑定数据后可以在Page_PreRenderComplete事件中改变。
[b]——————————————————————end——————————————————————[/b]
二、asp.net 2.0生命周期 以及Page_Load、Page_Init方法使用原理
——————————————————————解答区——————————————————————
网页的生命周期列表:
PreInit (2.0)
->初始化Theme,应用MasterPage和控件Skin
->Init
->InitComplete (2.0)
->If PostBack,创建子控件并加载控件/视图状态
->PreLoad (2.0)
->Load
->If PostBack,则触发服务器端事件
->LoadComplete (2.0)
->If not PostBack,则创建子控件
->PreRender
->PreRenderComplete (2.0)
->保存控件/视图状态
->SaveStateComplete (2.0)
->Render
->Unload
需要注意的是上图中标注(2.0)的事件即ASP.NET 2.0中新增的事件都仅仅是Page类中可以使用,并不是像其他事件一样可以在控件中使用。
ASP.NET 2.0中可以通过启用(默认值为True)AutoEventWireUp为网页事件创建事件处理程序,并使用隐式为事件处理程序注册的方法名。
以下是VS2005隐式为各个事件添加关联的方法:
事件 -> 方法名
Page.PreInit -> Page_PreInit
Control.Init -> Page_Init
Page.InitComplete -> Page_InitComplete
Page.PreLoad -> Page_PreLoad
Control.Load -> Page_Load
Page.LoadComplete -> Page_LoadComplete
Control.PreRender -> Page_PreRender
Control.DataBinding -> Page_DataBind
Page.PreRenderComplete -> Page_PreRenderComplete
Page.SaveStateComplete -> Page_SaveStateComplete
Control.Unload -> Page_Unload
TemplateControl.Error -> Page_Error
TemplateControl.AbortTransation -> Page_AbortTransation
TemplateControl.AbortTransation -> OnTransationAbort
TemplateControl.CommitTransation -> Page_CommitTransation
TemplateControl.CommitTransation -> OnTransationCommit
Page基类会在请求的开头阶段调用基类TemplateControl的HookUpAutomaticHandlers方法。该方法遍历上表中所示的方法名,并使用反射在程序员的类中查找具有相同名称和合适特征标的方法。如果找到合适的方法,则创建一个类型合适的委托,并使用该方法初始化它,并将其加入委托列表,该委托在相应事件发生时候将被触发。
这些事件都是由基类Page的一个虚方法或者Page类从基类Control继承的虚方法触发。所以可以有三种方法注册这些事件:(以Load事件为例)
1、显式的将一个委托和一个事件关联起来(通常都是在网页的Init处理程序中)
2、编写一个名为Page_Load的方法,并使其特征标和事件相同
3、重写Override虚方法Onload
这个三个方法中重写Override比较快一点点,但是VS2005默认是第二种。
——————————————————————end——————————————————————
——————————————————————解答区[b]——————————————————————[/b]
1.关于asp.net中数据绑定和相关事件的执行顺序
如果通过指定DataSourceId的方式绑定的,数据绑定将在PreRender阶段进行
控件的ItemCreated事件将会在每个条目数据绑定之前进行ItemDataBound在数据绑定完成之后进行
如果使用指定DataSource属性,然后DataBind的方式对控件进行绑定,则DataBind语句在哪个事件中,控件的数据绑定随之发生在哪个事件中
需要注意的是,当页面PostBack之后,如果控件EnableViewState==True,则会发生LoadState事件,这个时候会触发控件的ItemCreated事件
但是这个时候不进行数据绑定,e.Item.DateItem中是空的,进行相关操作的话,需要慎重考虑
对于不是使用DataBind进行手工绑定数据的控件,在EnableViewState==True的情况下,PostBack之后,不再进行数据绑定
而是从ViewState中恢复原先控件的样子.
关于在aspx中的几个脚本标记
1. <%# %> asp.net数据绑定表达式,在PreRender或者手工绑定数据的事件中执行。内容为表达式(c#中不以;结尾)
2. <% %> 在Render事件中执行,已经是最后了。内容为语句(C#中以;结尾)
3. <%= %> 在Render事件中执行。内容为表达式(c#中不以;结尾)
假如需要在执行表达式的地方,执行一批语句,可以封装到Page类的一个Public方法中
2.ASP.Net中控件和页面的相关事件
Control_Constructor
OnPreInit
Control_OnInit
OnInit
OnInitComplete
OnPreLoad
Page_Load
Control_OnLoad
OnLoadComplete
OnPreRender
Control_OnPreRender
Control_SaveViewState
Control_SaveViewState
Control_Render
Render
Control_OnUnLoad
OnUnload
注意Control_SaveViewState是在OnUnload之前的
当SaveViewState之后,你再改变什么东西的话,就无效了,无效了
postback回来,会从viewstate里面恢复回来的,像见鬼一样
在绑定数据后可以在Page_PreRenderComplete事件中改变。
[b]——————————————————————end——————————————————————[/b]
二、asp.net 2.0生命周期 以及Page_Load、Page_Init方法使用原理
——————————————————————解答区——————————————————————
网页的生命周期列表:
PreInit (2.0)
->初始化Theme,应用MasterPage和控件Skin
->Init
->InitComplete (2.0)
->If PostBack,创建子控件并加载控件/视图状态
->PreLoad (2.0)
->Load
->If PostBack,则触发服务器端事件
->LoadComplete (2.0)
->If not PostBack,则创建子控件
->PreRender
->PreRenderComplete (2.0)
->保存控件/视图状态
->SaveStateComplete (2.0)
->Render
->Unload
需要注意的是上图中标注(2.0)的事件即ASP.NET 2.0中新增的事件都仅仅是Page类中可以使用,并不是像其他事件一样可以在控件中使用。
ASP.NET 2.0中可以通过启用(默认值为True)AutoEventWireUp为网页事件创建事件处理程序,并使用隐式为事件处理程序注册的方法名。
以下是VS2005隐式为各个事件添加关联的方法:
事件 -> 方法名
Page.PreInit -> Page_PreInit
Control.Init -> Page_Init
Page.InitComplete -> Page_InitComplete
Page.PreLoad -> Page_PreLoad
Control.Load -> Page_Load
Page.LoadComplete -> Page_LoadComplete
Control.PreRender -> Page_PreRender
Control.DataBinding -> Page_DataBind
Page.PreRenderComplete -> Page_PreRenderComplete
Page.SaveStateComplete -> Page_SaveStateComplete
Control.Unload -> Page_Unload
TemplateControl.Error -> Page_Error
TemplateControl.AbortTransation -> Page_AbortTransation
TemplateControl.AbortTransation -> OnTransationAbort
TemplateControl.CommitTransation -> Page_CommitTransation
TemplateControl.CommitTransation -> OnTransationCommit
Page基类会在请求的开头阶段调用基类TemplateControl的HookUpAutomaticHandlers方法。该方法遍历上表中所示的方法名,并使用反射在程序员的类中查找具有相同名称和合适特征标的方法。如果找到合适的方法,则创建一个类型合适的委托,并使用该方法初始化它,并将其加入委托列表,该委托在相应事件发生时候将被触发。
这些事件都是由基类Page的一个虚方法或者Page类从基类Control继承的虚方法触发。所以可以有三种方法注册这些事件:(以Load事件为例)
1、显式的将一个委托和一个事件关联起来(通常都是在网页的Init处理程序中)
2、编写一个名为Page_Load的方法,并使其特征标和事件相同
3、重写Override虚方法Onload
这个三个方法中重写Override比较快一点点,但是VS2005默认是第二种。
——————————————————————end——————————————————————
相关文章推荐
- 整理了一下Asp.net源码常见问题(完善中...),欢迎大家补充修正(最后更新于06-01)!
- ASP.NET AJAX(Atlas)现存的一些常见问题以及解决方案[持续更新]
- asp.net 与oracle 连接的一些常见问题(不断更新中)
- 在asp.net中使用session常见问题集锦
- Asp.net MVC Razor常见问题及解决方法(转载>云中客)
- fckeditor在ASP.NET中常见问题的解决方法
- Asp.Net读取Execl常见问题收集
- NET常见问题记录(不定期更新)
- Asp.net获取客户端IP常见代码存在的伪造IP问题探讨
- ASP.NET常见问题汇总
- ASP.NET—011:JavaScript报错常见问题
- Asp.net生成Excel文件并下载(更新:解决使用迅雷下载页面而不是文件的问题)
- 在ASP.NET中使用Session常见问题集锦
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
- ASP.NET应用中十大常见的潜在问题(转载)
- ASP.NET在线用户列表精确版——解决用户意外退出在线列表无法及时更新问题
- ASP。net常见问题解决
- 在ASP.NET中使用Session常见问题集锦
- c# asp.net常见问题收集之二
- ASP.NET AJAX常见问题整理