您好,欢迎访问三七文档
创建服务器控件议程回顾架构创建服务器控件控件属性触发事件使用客户端脚本重载Render组合控件ASP.NET中的控件什么是ASP.NET控件?服务器端WebUI组件属性,方法,事件演绎成标注(HTML,XML,script,etc.)处理posted数据和用户行为封装逻辑多种演绎选项一个控件是一个.NET类型,基类是System.Web.UI.ControlSystem.Web.UI.WebControls.WebControl两种创建控件的方法用户控件(页面作为控件)容易创建–是存作*.ascx的页面支持部分页面缓存用于单个应用缺少设计时支持定制控件技术要求高一些支持多个应用(GAC)设计时支持非常强大基于Tag的存储运行时解析Tags创建控件实例设置属性初始值acme:Listid=l1liststyle=numberrunat=serverItemsacme:ListItemfirstitem/acme:ListItemacme:ListItemseconditem/acme:ListItemacme:ListItemthirditem/acme:ListItem/Items/acme:ListClasstocreate标记作为服务器控件命名空间引用实例ID对l1设置liststyle属性对l1设置Items属性运行时使用控件控件是代码中的.NET对象在页面事件中处理控件Page_Load,Button1_Click,等等.voidPage_Load(objectsend,EventArgse){l1.Items.Add(“fourthitem”);l1.ForeColor=Color.Blue;}页面/控件处理第一次载入InitLoadPreRenderSaveViewStateRenderDispose实例化每个控件,设置为初始状态,加入控件树运行用户代码,测试!IsPostBack条件来数据绑定到第一批值CreateChildControls()确保控件准备好被演绎控件存储状态值(如果与初始值不同)每个控件将自身演绎到响应中释放页面和所有控件页面/控件处理PostbackInitLoadPreRenderSaveViewStateRenderDispose从ViewState载入控件的上一次状态Posted数据(HTTP表单中)传递到相应控件按照在树中的次序触发控件事件,除了导致Post的控件.它最后触发.LoadViewStatePostbackdataPostbackevents控件属性属性处理控件类型属性作为控件的特性出现属性可以:类型成员存储在ViewState中AspNetForums:StyleSkinTitle=”MyForumsTitle”runat=serverID=Styleskin1/EventLog控件触发事件SimpleLinkButton往SimpleLabel控件加入事件将流览器客户事件映射到服务器事件用Page.GetPostBackClientHyperLink()产生Postback实现IPostBackEventHandlerASP.NET服务器应用触发服务器端事件将流览器客户事件映射到服务器事件Click!Button1Button2Checkbox1Listbox1Button1.RaisePostBackEvent()触发OnClick()调用事件处理函数Button1_Click()注册控件以接收postback事件通知IPostBackEventHandlerHTTP表单postSimpleLinkButton客户端脚本HoverLabel控件增加客户端hover和cursor效果使用Page.RegisterStartupScript来演绎加入的脚本设置一个特定的版本AssemblyVersion特性(未在演示中)将脚本放在一个共享的地方/aspnet_client/assembly/version/script.js客户端脚本支持提供EnableClientScript属性使用BrowserCapabilities来确定流览器是否支持脚本Page.Request.Browser.EcmaScriptVersion在OnPreRender时作此检验因此检验不在设计模式时进行HoverLabel重载RenderProgressBar控件演绎成HTML表从WebControl继承“免费”获取许多实现VS.NET中的设计器支持重载Render()重载RenderOverrideRenderprotectedoverridevoidRender(…){writer.Write(Text);}或者只是内容的演绎:protectedoverridevoidRenderContents(…){foreach(ListItemliinItems){RenderListItem(output,li);}}演绎属性从WebControl继承的控件在开始标记中演绎风格属性基本的uplevel/downlevel风格支持也可以增加新的属性protectedoverridevoidAddAttributesToRender(…){//addanotherattibuteforthebegintagwriter.AddAttribute(type,square);base.AddAttributesToRender(writer);}ProgressBar组合控件组合控件组合控件是包含其它控件的控件一起解决常见问题组合控件必须为命名空间实现INamingContainer重载CreateChildControls()来根据需要创建子控件子控件管理它们自己的视图状态CreateChildControls确保控件树已准备好PreRenderFindControl在CreateChildControls创建子控件,设置初始属性值对每个请求给予相同的初始值在加入控件树之前赋初始值加入Controls集合连接事件处理函数RequiredTextField控件在VS.Net中开发服务端控件建立一个Web控件库项目编辑AssemblyInfo类型VersionTagPrefix加入一个Web应用来测试控件Solution-AddNew-WebApplication加到ToolBox中CustomizeToolBox-Browse使用RequiredTextField控件总结控件提供了抽象重用ASP.NET提供了丰富的控件框架在Posts之间保持状态处理Post事件从脚本处获得客户端处理能力从现有的ASP.NET控件继承
本文标题:创建服务器控件
链接地址:https://www.777doc.com/doc-1586250 .html