这里列举出来了11个生命周期,一般的控件生命周期会经历这11个生命周期,但是有一些特别的控件比如页面控件System.Web.UI.Page等。

具体代码参考如下:

     /// <summary>
/// 1. 初始化
/// </summary>
/// <param name="e"></param>
protected override void OnInit(EventArgs e)
{
OutPut("1. OnInit");
base.OnInit(e);
this.Page.RegisterRequiresPostBack(this);
} /// <summary>
/// 2. 装载视图
/// </summary>
/// <param name="savedState"></param>
protected override void LoadViewState(object savedState)
{
OutPut("2. LoadViewState");
base.LoadViewState(savedState);
} /// <summary>
/// 3. 回传数据处理
/// </summary>
/// <param name="postDataKey"></param>
/// <param name="postCollection"></param>
/// <returns></returns>
public virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection)
{
OutPut("3. LoadPostData");
return true;
} /// <summary>
/// 4. 装载时间
/// </summary>
/// <param name="e"></param>
protected override void OnLoad(EventArgs e)
{
OutPut("4. OnLoad");
base.OnLoad(e);
} /// <summary>
/// 5. 回传事件通知
/// </summary>
public virtual void RaisePostDataChangedEvent()
{
OutPut("5. RaisePostDataChangedEvent");
} /// <summary>
/// 6. 处理回发事件
/// </summary>
/// <param name="eventArgument"></param>
public virtual void RaisePostBackEvent(string eventArgument)
{
OutPut("6. RaisePostBackEvent");
} /// <summary>
/// 7. 预呈现
/// </summary>
/// <param name="e"></param>
protected override void OnPreRender(EventArgs e)
{
OutPut("7. OnPreRender");
base.OnPreRender(e);
} /// <summary>
/// 8 保存视图状态
/// </summary>
/// <returns></returns>
protected override object SaveViewState()
{
OutPut("8. SaveViewState");
base.SaveViewState();
return new Pair();
} /// <summary>
/// 9. 呈现
/// </summary>
/// <param name="writer"></param>
protected override void Render(HtmlTextWriter writer)
{
writer.Write("<input type='button' name=\"{0}\" value=\"Click Me!\" style='position: absolute; left: 20px; top: 280px;' onclick=\"{1}\" />", "[控件声明周期]", Page.ClientScript.GetPostBackEventReference(this, ""));
OutPut("9. Render");
base.Render(writer); } /// <summary>
/// 10. 卸载
/// </summary>
/// <param name="e"></param>
protected override void OnUnload(EventArgs e)
{
OutPut("10. OnUnload");
base.OnUnload(e);
} /// <summary>
/// 11. 释放资源
/// </summary>
public override void Dispose()
{
OutPut("11. Dispose");
base.Dispose();
} private void OutPut(string strText)
{
if (this.DesignMode == false)
{
HttpContext.Current.Response.Write(strText + "<br />");
}
} [Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]
public string Text
{
get
{
String s = (String)ViewState["Text"];
return ((s == null) ? String.Empty : s);
} set
{
ViewState["Text"] = value;
}
} protected override void RenderContents(HtmlTextWriter output)
{
output.Write(Text);
}

这个代码复制到asp.net 服务器控件中,即可调试。

.net 控件生命周期的更多相关文章

  1. ASP.NET页面生命周期与控件生命周期

    ASP.NET页面生命周期 (1)PreInit 预初始化(2)Init 初始化(3)InitComplete 初始化完成(4)PreLoad 预加载(5)Load 加载(6)LoadComplete ...

  2. atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較

    atitit.提升开发效率---使用server控件生命周期  asp.net 11个阶段  java jsf 的6个阶段比較 例如以下列举了server控件生命周期所要经历的11个阶段. (1)初始 ...

  3. 第一篇:初识ASP.NET控件开发_第三节:“生死有序”的控件生命周期

    一.Page本质是一个Control 我们首先要澄清的第一个概念是页面类Page本质是一个控件类,它派生于TemplateControl类,而TemplateControl派生自Control类.既然 ...

  4. react-组件生命周期

    本文同步至微信公众号http://mp.weixin.qq.com/s?__biz=MzAxMzgwNDU3Mg==&mid=402267570&idx=1&sn=4b0dc2 ...

  5. ReactJS-3-组件生命周期

    简介 普通的UI应用生命周期一般包括Birth, Growth, Death, React中Component的生命周期也是如此,这是一个持续的过程,贯穿整个应用的生命历程. 阶段 1.mountin ...

  6. .net学习笔记----Asp.net的生命周期之一应用程序生命周期

    Http请求刚刚到达服务器的时候 当服务器接收到一个 Http请求的时候,IIS (Internet Information Services,互联网信息服务)首先需要决定如何去处理这个请求. 什么是 ...

  7. Asp.net的生命周期之应用程序生命周期

    参考:http://msdn.microsoft.com/zh-cn/library/ms178473(v=vs.100).aspx 参考:http://www.cnblogs.com/JimmyZh ...

  8. ASP。NET控件—控件如何相互关联

    介绍 这是我关于ASP系列的另一篇小文章.NET控件,它的主要焦点是揭示控件如何相互关联,涉及哪些实体,以及它们在此任务中的主要角色是什么. 动机 理解每次处理页面请求和某人在他的浏览器中获得您的we ...

  9. GridView控件

    GridView是ASP.NET 1.x的DataGrid控件的后继者.它提供了同样的基本功能集,同一时候添加�了大量扩展和改进.如前所述,DataGrid(ASP.NET 2.0仍然全然支持)是一个 ...

随机推荐

  1. tomcat7换端口号调试

    1.C:\tomcat\conf\server.xml中修改端口号 2.C:\tomcat\bin\startup.bat批处理文件启动tomcat 3.用ctrl+c结束批处理文件 4.调试结束

  2. November 20th 2016 Week 47th Sunday

    Learn from yesterday, live for today, look to tomorrow. 学习昨天,活在今天,展望明天. There is always room at the ...

  3. if 条件为假(不成立),对应的语句块不会执行. 然后往下走

    if  的条件为真,则执行语句块. 如果条件不真,则执行后面的语句块, 即  : if False: print("卡卡卡") # 前面的if条件是False,提示"un ...

  4. 【C#】#100 调用摄像头

    需求:由于项目需要获得用户的头像,所以需要用C#调用摄像头获取头像. 下面写一个调用摄像头的方法 案例:调用摄像头的一个DEMO[效果图] 使用的类库:AForge.dll   [Demo下载,Dem ...

  5. 两周以来的学习成果&遇到的问题及解决:

    1.学习java的基本内容,看慕课网上的java入门三季,与韩顺平老师的java视频 刚开始是看韩顺平老师的视频,边看边实战,内容很细,也很快熟练,但是进度太慢.后来就先看了慕课网上的java 入门的 ...

  6. 鼠标有但是U盘读取不出来怎么办

    我今天就遇到了这个问题,搞了半天最后下了一个驱动人生,查看里面的回答才解决 就是把里面通用串行总控制器设置为隐藏文件可读之后选择把灰色的都删除就好了.具体可以在驱动人生里搜U盘不识别,之后就4,5步即 ...

  7. FreeMarker标签使用

    FreeMarker标签使用 模板技术在现代的软件开发中有着重要的地位,主要用于view层的展示,freemarker是比较流行的一种. 一.FreeMarker模板文件主要有4个部分组成 ①文本,直 ...

  8. 如何用代码而非事件触发PBO

    通常我们通过抛出事件触发PBO,但若没有事件发生时,我们其实也可以用代码强制发出命令. 写法如下: CL_GUI_CFW=>SET_NEW_OK_CODE( NEW_CODE = <uco ...

  9. Python学习之路 (二)爬虫(一)

    Python基础 基础教程参考廖雪峰的官方网站https://www.liaoxuefeng.com/ 一."大数据时代",数据获取的方式 1. 企业生产的用户数据:大型互联网公司 ...

  10. LayIM.AspNetCore Middleware 开发日记(一)闲言碎语

    前言 前几天写博客的时候突然看见了历史上的今天.不禁感慨时光如梭,这系列博客后来被我标注了已经过时,但是还有很多小伙伴咨询我.既然过时就要更新,正好 .NET Core 也出来很久了,于是乎想到把La ...