版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、创建服务器控件,议程,回顾架构 创建服务器控件 控件属性 触发事件 使用客户端脚本 重载Render 组合控件,www.ddqc.cc,ASP.NET中的控件,什么是 ASP.NET控件?,服务器端Web UI 组件 属性,方法, 事件 演绎成标注 (HTML, XML, script, etc.) 处理 posted 数据和用户行为 封装逻辑 多种演绎选项 一个控件是一个.NET 类型, 基类是 System.Web.UI.Control System.Web.UI.WebControls.WebControl,两种创建控件的方法,用户控件(页面作为控件) 容易创建 是存作 *.ascx的页
2、面 支持部分页面缓存 用于单个应用 缺少设计时支持 定制控件 技术要求高一些 支持多个应用 (GAC) 设计时支持非常强大,基于Tag的存储,运行时解析Tags 创建控件实例 设置属性初始值, first item second item third item ,运行时使用控件,控件是代码中的.NET 对象 在页面事件中处理控件 Page_Load, Button1_Click, 等等.,void Page_Load(object send, EventArgs e) l1.Items.Add(“fourth item”); l1.ForeColor = Color.Blue; ,页面/控件处
3、理第一次载入,Init,Load,PreRender,SaveViewState,Render,Dispose,实例化每个控件, 设置为初始状态, 加入控件树,运行用户代码, 测试 !IsPostBack条件来数据绑定到第一批值,CreateChildControls() 确保控件准备好被演绎,控件存储状态值(如果与初始值不同),每个控件将自身演绎到响应中,释放页面和所有控件,页面/控件处理Post back,Init,Load,PreRender,SaveViewState,Render,Dispose,从ViewState载入控件的上一次状态,Posted 数据 (HTTP 表单中) 传递
4、到相应控件,按照在树中的次序触发控件事件, 除了导致Post的控件. 它最后触发.,LoadViewState,Postback data,Postback events,控件属性,属性处理,控件类型属性 作为控件的特性出现 属性可以 : 类型成员 存储在 ViewState中,EventLog控件,触发事件,SimpleLinkButton,往 SimpleLabel控件加入事件 将流览器客户事件映射到服务器事件 用 Page.GetPostBackClientHyperLink()产生Postback 实现 IPostBackEventHandler,ASP.NET 服务器应用,触发服务器
5、端事件,将流览器客户事件映射到服务器事件,Click!,SimpleLinkButton,客户端脚本,HoverLabel控件,增加客户端hover 和cursor 效果 使用Page.RegisterStartupScript 来演绎加入的脚本 设置一个特定的版本 AssemblyVersion 特性 (未在演示中) 将脚本放在一个共享的地方 /aspnet_client/assembly/version/script.js,客户端脚本支持,提供 EnableClientScript 属性 使用BrowserCapabilities 来确定流览器是否支持脚本 Page.Request.Bro
6、wser.EcmaScriptVersion 在 OnPreRender时作此检验 因此检验不在设计模式时进行,HoverLabel,重载Render,ProgressBar控件,演绎成 HTML 表 从 WebControl继承 “免费”获取许多实现 VS.NET中的设计器支持 重载Render(),重载Render,Override Render protected override void Render() writer.Write(Text); 或者只是内容的演绎: protected override void RenderContents() foreach (ListItem
7、li in Items) RenderListItem(output, li); ,演绎属性,从 WebControl继承的控件 在开始标记中演绎风格属性 基本的uplevel/downlevel 风格支持 也可以 增加新的属性 protected override void AddAttributesToRender() / add another attibute for the begin tag writer.AddAttribute(type, square); base.AddAttributesToRender(writer); ,ProgressBar,组合控件,组合控件,组合
8、控件是 包含其它控件的控件 一起解决常见问题 组合控件必须 为命名空间实现INamingContainer 重载CreateChildControls() 来根据需要创建子控件 子控件管理它们自己的视图状态,CreateChildControls,确保控件树已准备好 PreRender FindControl 在 CreateChildControls 创建子控件, 设置初始属性值 对每个请求给予相同的初始值 在加入控件树之前赋初始值 加入Controls集合 连接事件处理函数,CreateChildControls(),protected overrides void CreateChild
9、Controls() TextBox text1 = new TextBox(); text1.ID = text1“; text1.Text = “Text”; RequiredFieldValidator req1 = new RequiredFieldValidator(); req1.ControlToValidate = text1“; req1.Text = *“; Controls.Add(text1); Controls.Add(new LiteralControl( ,RequiredTextField控件,在VS.Net中开发服务端控件,建立一个Web控件库项目 编辑Ass
10、emblyInfo类型 Version TagPrefix 加入一个Web应用来测试控件 Solution-Add New-Web Application 加到ToolBox中 Customize ToolBox-Browse,使用RequiredTextField控件,总结,控件提供了 抽象 重用 ASP.NET 提供了丰富的控件框架 在Posts之间保持状态 处理Post事件 从脚本处获得客户端处理能力 从现有的 ASP.NET控件继承,使用模板,模板化控件,定制控件外观 实现 ITemplate 模板初始化由Parser进行 ITemplate:InstantiateIn 控件通常会实现
11、INamingContainer 载入模板 缺省模板,控件内部所有 内联模板,控件内定义 动态载入,使用模板,ForumRepeater : Repeater 新的属性 内部数据绑定 模板 实现定制的ItemTemplate 可重载初始值,使用模板,控件Skinning,Skinning 控件,不包含 UI/Markup 由Skin控制 控件标签(XML, HTML, 等等) 控件UI (标签布局) 一个skin 文件是 一个 .ascx文件 动态载入 可以有代码,Skinning Controls,设计时支持,创建一个控件设计器,从 System.Web.UI.Design.ControlD
12、esigner继承 与 DesignerAttribute关联, Designer(typeof(AspConn.ControlsCS2. ContentRotatorDesigner) public class ContentRotator : WebControl ,设计时演绎,设计时必须用HTML表示 (不管在运行时如何演绎) 缺省情形下用Render() 的结果 重载 GetDesignTimeHtml() GetEmptyDesignTimeHtml() 当Render返回空字符串时 GetErrorDesignTimeHtml() 当无法载入控件时,设计时支持,Firing The
13、 Client Event,Create script reference using Page.GetPostBackClientHyperlink(); Client Implementation: _doPostBack(),ctl,protected override void Render(writer) string eventRef = Page.GetPostBackClientHyperlink(this,”); writer.AddAttribute(HtmlTextWriterAttribute.Href, eventRef); writer.RenderBeginTag(HtmlTextWriterTag.A); RenderContents(writer); writer.RenderEndTag(); ,Processing The Server Event,Control must implement IPostBackEventHandler Page calls controls RaisePostBackEvent() method,public class SimpleLinkButton : SimpleLabel, IPostBackEventHandler void RaisePos
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中央民族大学《速写》2024-2025学年第二学期期末试卷
- 景点内部管理制度范本
- 玉溪师范学院《密码学技术》2024-2025学年第二学期期末试卷
- 机关内部矛盾调处制度
- 机电项目内部管理制度
- 林场内部控制制度
- 柳钢股份内部控制制度
- 检测站内部年审制度范本
- 民事审判内部管理制度
- 民政内部控制制度流程
- LightTools优化模块用户指南
- 2024年山东济南中考满分作文《为了这份繁华》
- 2024年八年级历史下册 第一单元 中华人民共和国成立和向社会主义过渡 第2课《人民政权的巩固》说课稿 华东师大版
- 初中地理研讨会心得体会
- 产后母婴康复机构管理和服务指南 征求意见稿
- 清史学习通超星期末考试答案章节答案2024年
- DL∕T 1057-2023 自动跟踪补偿消弧线圈成套装置技术条件
- (高清版)WST 442-2024 临床实验室生物安全指南
- 铁岭卫生职业学院单招参考试题库(含答案)
- 某企业研发团队职级职位管理制度:三大职位序列附职位图谱
- 电力电缆高频局放试验报告
评论
0/150
提交评论