.net 控件生命周期
这里列举出来了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 控件生命周期的更多相关文章
- ASP.NET页面生命周期与控件生命周期
ASP.NET页面生命周期 (1)PreInit 预初始化(2)Init 初始化(3)InitComplete 初始化完成(4)PreLoad 预加载(5)Load 加载(6)LoadComplete ...
- atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較
atitit.提升开发效率---使用server控件生命周期 asp.net 11个阶段 java jsf 的6个阶段比較 例如以下列举了server控件生命周期所要经历的11个阶段. (1)初始 ...
- 第一篇:初识ASP.NET控件开发_第三节:“生死有序”的控件生命周期
一.Page本质是一个Control 我们首先要澄清的第一个概念是页面类Page本质是一个控件类,它派生于TemplateControl类,而TemplateControl派生自Control类.既然 ...
- react-组件生命周期
本文同步至微信公众号http://mp.weixin.qq.com/s?__biz=MzAxMzgwNDU3Mg==&mid=402267570&idx=1&sn=4b0dc2 ...
- ReactJS-3-组件生命周期
简介 普通的UI应用生命周期一般包括Birth, Growth, Death, React中Component的生命周期也是如此,这是一个持续的过程,贯穿整个应用的生命历程. 阶段 1.mountin ...
- .net学习笔记----Asp.net的生命周期之一应用程序生命周期
Http请求刚刚到达服务器的时候 当服务器接收到一个 Http请求的时候,IIS (Internet Information Services,互联网信息服务)首先需要决定如何去处理这个请求. 什么是 ...
- Asp.net的生命周期之应用程序生命周期
参考:http://msdn.microsoft.com/zh-cn/library/ms178473(v=vs.100).aspx 参考:http://www.cnblogs.com/JimmyZh ...
- ASP。NET控件—控件如何相互关联
介绍 这是我关于ASP系列的另一篇小文章.NET控件,它的主要焦点是揭示控件如何相互关联,涉及哪些实体,以及它们在此任务中的主要角色是什么. 动机 理解每次处理页面请求和某人在他的浏览器中获得您的we ...
- GridView控件
GridView是ASP.NET 1.x的DataGrid控件的后继者.它提供了同样的基本功能集,同一时候添加�了大量扩展和改进.如前所述,DataGrid(ASP.NET 2.0仍然全然支持)是一个 ...
随机推荐
- November 21st 2016 Week 48th Monday
A bird is known by its note, and a man by his talk. 闻其声而知鸟,听其言而知人. Listen to what a man talks, watch ...
- c++课程学习(未完待续)
关于c++课程学习 按照计划,我首先阅读谭浩强c++程序设计一书的ppt,发现第一章基本上都是很基础的东西. 同时,书中与班导师一样,推荐了使用visual c++. 而师爷的教程里面推荐使用的是ec ...
- 使用Oracle的instr函数与索引配合提高模糊查询的效率
使用Oracle的instr函数与索引配合提高模糊查询的效率 一般来说,在Oracle数据库中,我们对tb表的name字段进行模糊查询会采用下面两种方式:1.select * from tb wher ...
- Phthon3.4 新特性
1. print的变化:. 在python3.0中,print成为了一个函数,将传入的参数一输出. Python3.0: Python 2.5: 2.使用比较操作符时,如果被比较的对象没有 ...
- Css中路径data用法
Data URI scheme是在RFC2397中定义的,目的是将一些小的数据,直接嵌入到网页中,从而不用再从外部文件载入. data:,文本数据 data:text/plain,文本数据 data: ...
- 2.1 The Python Interpreter(python解释器)
2.1 The Python Interpreter(Python解释器) Python是一门解释性语言.Python的解释器一次只能运行一个命令.标准的Python解释器环境可以用通过输入pytho ...
- Laravel中如何将单个routes.php分割成多个子文件
随着业务逻辑越来越复杂,routes.php文件也会变得越来越庞大,为了便于管理,我们可以像管理配置文件那样将其分割成多个子文件,这实现起来很简单: // app/routes.php ... // ...
- 第三部分 OpenStack镜像管理
一.简介 很多源都有为OpenStack已经编译好的各种镜像了,您可以直接下载并通过使用这些镜像来熟悉OpenStack. 不过如果是为生产环境进行部署的话,您一定需要构建含有定制软件或配置的镜像文件 ...
- linux shell基本知识 sleep命令
在有的shell(比如linux中的bash)中sleep还支持睡眠(分,小时) sleep 睡眠1秒 sleep 1s 睡眠1秒 sleep 1m 睡眠1分 sleep 1h 睡眠1小时
- Mysql 多实例实施步骤
基本理论:利用同一套安装程序,不同配置文件,不同启动程序,不同数据目录.有公用资源,也有私有资源. 实现步骤: 1.正常安装mysql,二进制安装或者编译安装. 2.创建mysql多实例总目录,总目录 ...