ASP.NET控件开发笔记

服务器控件生命周期
            Page Life Cycle
Web Server                            Client browser
Instantiate Control Tree            HTML
Unpack ViewState                    Client-Side Script
Process Postback Data                ViewState in Hidden Fields
Execute Page_load
Server-Side Events Fire
Save ViewState
Render Process
Dispose of Control Tree

在第一次用过HTTP Get方法获取到页面后,每一次向服务端进行HTTP POST回传都会分为以下几个步骤
1、初始化控件树
2、将传回的ViewState进行解析
3、根据前几次的回传解析来为控件树中的每一个控件设置状态
4、处理回传数据
5、处理Page_Load事件
6、通过PostBack通知控件的数据变化,并在必要的情况下更新控件状态
7、执行基于控件状态改变的服务端事件
8、将控件状态持久化为ViewState
9、按照次序Render控件树中的每一个控件
10、Dispose整个页面和控件树


由上面的列表可以看出整个的用户Request和服务器Response的周期,
首先是将状态解析并根据控件的状态来处理状态的改变,
最后处理完后将这些Render回客户端,并将新的状态以ViewState的形式保存在客户端的hidden form中

//服务器控件生命周期
System.Web.UI.Control基类定义了OnInit、OnLoad、OnPreRender和OnUnload,这四个事件可以被重写
Dispose事件虽然Control也有定义,但没有想对应的方法来引发事件,所以如果需要Dispose事件,需要实现IDispose接口

通常情况下,第一次访问aspx页面的时候,通过HTTP GET 方法,第二次及以后会用过HTTP POST
方法区别示例
HTTP GET                HTTP POST
Init                    Init
Load                    LoadViewState
PreRender                Load postback data
SaveViewState            Load
Render                    Postback data changed
Unload                    PostBack
Dispose                    PreRender
                        SaveViewState
                        Render
                        Unload
                        Dispose
                       


//服务器控件模板
定义控件内容
    模板用于让开发人员自定义HTML或者服务器控件作为主要控件输出流的一部分
    提供了模板的服务器控件其实是给予插入的自定义控件提供了容器
    通过让开发人员可以定制输出特定的HTML来给予了开发人员极高的灵活性
   
    使用服务器控件模板的一大好处是我们可以专注开发控件,而把外观等HTML和CSS设置
    内容让其他人来完成
   
    ParseChildren Attribute
        服务器控件必须通过在类声明时添加ParseChildren标签告诉asp.net页面分析器这个
        控件需要支持模板,ParseChildren的功能就是让服务器控件包含的所有的子控件
        作为它的一个属性存在
       
        ParseChildren标签还暴露了ChildrenAsProperties属性,
        在使用时:ParseChildAttribute(ChildrenAsProperties = true)
        也可以使用简便写法:ParseChildren(true)
       

数据绑定
    数据绑定用于从数据库中提取数据,与服务器控件模板互为补充
    数据绑定的形式
        仅仅将一个数据表达式求值并将该值赋给某个属性,例:<asp:Label id="MyLabel" runat="server" Text="<%= MyDataBoundMethod()%>" >
    数据绑定控件的基类
        System.Web.UI.WebControls.DataBoundControl    所有数据绑定类的基类
        System.Web.UI.WebControls.CompositeDataBoundControl    继承DataBoundControl基类,用于复合服务器绑定控件
        System.Web.UI.WebControls.HierarchicalDataBoundControl    基于树的分层控件的基类

























知识共享许可协议
《ASP.NET控件开发笔记》常伟华 创作。
采用 知识共享 署名-相同方式共享 3.0 中国大陆 许可协议进行许可。
相邻依据:发表时间
  • 多说评论
  • 签名
  • 新浪微博
  • 默认评论
  • Tab Header 5

0 条评论 / 点击此处发表评论

Tab Content 5

开发技术


开发平台和工具

sitemap     174.04ms