|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
计算机发展到这个时候,很多技术日益成熟,想学好一种技术都是不容易的,当你学会用的时候你对它的很多原理可能很不了解)asp.net|web|控件 1、弁言
到今朝为止,你大概已懂得了大批的ASP.NET2.0新特性-母版页面,主题,供应者,等等……一切如许内容都相称出色;可是,你是不是懂得到有关定制Web控件开辟方面的严重变更?这恰是我在本文中所想会商的。假如你已处置于控件开辟,那末,我想本文所形貌的ASP.NET2.0中的新的改善特性会当即使用于你的控件开辟中。
起首应当注重的是,你之前利用ASP.NET1.1(或1.0)开辟的一切Web控件在2.0版本下将持续优秀运转-微软并没有损坏你的现有代码。在本文中,我将向你先容的一切相干内容,包含很多新的使人冲动的手艺,一切这些你都能够增加到现有控件或在新的控件情况中利用。
【作者注】本文假定你对定制Web控件开辟已有一个基础懂得。在本文中,我以一个加强版本的EmailContact控件为例对ASP.NET2.0中的Web控件改善手艺作周全切磋。
2、改善
表格1形貌了ASP.NET2.0在定制Web控件开辟方面所作的年夜部分的严重改善。在本系列文章中,我将对这些特性睁开一一会商。
表格1:ASP.NET2.0Web控件改善功效。
改善形貌新的基类ASP.NET2.0中又引进了一些新的基类供你派生本人的控件。前面,我重点先容一个控件-CompositeControl。ControlState这是我们所熟习的ViewState的"至亲"。现在,ControlState中已不再必要利用专门的办法举行形态办理;另外一方面,当控件用户在一个站点(或页面)上封闭形态办理机制时,有助于使你制止堕落。敏捷标签这是令Windows控件开辟者相称镇静的新功效!在本文中,我将向你展现怎样在你本人的定制控件中到场如许的功效。模板计划时候编纂在1.1版本中,要对控件模板增加计划时候编纂才能是相称坚苦的。幸亏,ASP.NET2.0使得增加这个功效相称简单。在本系列文章的最初一部分中我将会商这个成绩。主动格局化这也是一个伟大的改善!在利用DataGrid控件时你能够从一个预界说格局的列表当选择既定格局。ASP.NET2.0使得在你的自界说控件中到场这一功效也十分简单。Web资本这是我非常喜好的一个改善,由于我老是不时地开辟与图象有关的一些控件。在ASP.NET2.0中,如今你能够公布一个控件的DLL,并且不用再思索其余甚么内容。也就是说,如今,你可以把图象和别的资本嵌进到控件的DLL文件内。
3、加强EmailContactWeb控件
本文中的定制EmailContactWeb控件(参考)同意在你的站点中到场一个"contactus"表单,它具有完全的电子邮件功效。在本文中,我将利用该功效加强这一控件。
4、一个新的基类
之前,开辟者都是从WebControl类派生他们的可视化Web控件。我之以是在此利用了"可视化"一词是由于,典范情形上,没有在扫瞄器中天生任何内容的控件都是派生自Control类。这一点并没有改动-你应当持续利用该Control类来派生任何如许的非可视化控件-它们实行不成见功效或在扫瞄器中天生除可视化HTML内容以外的任何别的内容。并且,在开辟可视化Web控件时,你还应当持续利用WebControl类。但是,我们所开辟的年夜多半复合控件都是为了使用现有控件的功效。在这类情形下,你应当老是从WebControl类举行派生,可是你还要记着别的一些有关细节-不然的话,有大概招致很多成绩。
复合控件必需完成INamingContainer接口,而且必要包含在你的控件类中。这个接口可以确保在你的控件及其能够天生的全部控件条理中的一切的HTML标签中都具有独一的标签定名。当你在单个页面上存在多个不异范例的复合控件的情形下,这是相称关头的。在如许的情形下,你必要确保任何天生的子元素都具有独一的称号。健忘完成该接口可以招致各类成绩的呈现。
在ASP.NET2.0之前,复合控件开辟者还必要记着在一个控件的Render办法中挪用EnsureChildControls。在我之前的文章中已经向你先容怎样重载该Render办法而且在挪用基类的Render办法前挪用这个办法。要使控件在VisualStudio计划时候准确天生这一步是需要的;不然,有大概带来很多方便。
下面两个步骤在复合控件开辟中云云广泛,乃至于很多开辟者常常城市构建一个包含这两个细节的基类,然后从该基类下派生他们一切的新的复合控件。作为取代,ASP.NET2.0供应了(更正确地说是"名字为")CompositeControl。借助于这个类来构建你的复合控件,你就不用再记着完成INamingContainer或从Render办法中实行一个EnsureChildControls挪用了。
别的,还存在别的一些新的基类,比方用于数据绑定的控件等,在此不再赘述。如果需要重新编写代码,几乎任何一门计算机语言都可以跨平台了,还用得着Java嘛,而且像PHP/C#等语言不需要修改代码都可以跨Windows/Linux。 |
|