- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 Web自定义控件 郑州信息科技职业学院 张中兴 本章内容包括: ★如何使用Visual Studio 2005开发环境建立一个Web自定义控件,以及如何将自定义控件应用到具体的Web项目中。 ★如何给一个控件创建子控件。 ★使用控件分析器来简化子控件标记的代码,并说明分析器的完整执行过程。 ★编写一个简单的复合控件。 关于 Web 用户控件与 Web 自定义控件的建议 如果现有的 ASP.NET 服务器控件都不符合应用程序的特定要求,则可以创建封装所需功能的 Web 用户控件或 Web 自定义控件。这两种控件之间的主要区别在于设计时的易创建性与易用性。 Web 用户控件Web 易于创建 为使用可视化设计工具的使用者提供有限的支持 每个应用程序中需要控件的一个单独副本 不能添加到 Visual Studio 中的工具箱 适用于静态布局 自定义控件 难于创建 为使用者提供完全的可视化设计工具支持 仅在全局程序集缓存中需要控件的单个副本 可以添加到 Visual Studio 中的工具箱 适用于动态布局 7.1 一个简单的自定义ASP.NET控件 1.新建网站 2.建立类库项目 3.建立一个Web自定义控件类 选中“My Components”项目图标并在上面右击选择“添加—新建项—Web自定义控件”。 说明:Visual Studio 2005开发环境会生成一个不需要任何修改就可以运行的控件代码,其中比较常用的一个函数就是RenderContents,该函数会在控件需要呈现给用户时被调用。 编译通过之后,需要在Web项目中引用这个控件库。做法是:在“解决方案资源管理器”中选中Web项目图标,在上面右击选择“添加引用” 。在弹出的“添加引用”对话框中选择“项目”选项卡,并选择“My Components”项目。最后点击“确定”按钮。 7.2 子控件 子控件最为常见的应用就是“select”标记,例如: select option value=”1”一/option option value=”2”二/option option value=”3”三/option /select 为一个Web自定义控件添加子控件的方法:在定义控件类时,给这个类贴上一个“[ParseChildren(false)]”属性标记。 ParseChildren必须被设置成false,让ASP.NET知道我们已经对子属性进行了处理,无需再对它进行进一步地解析了。false值表明子属性不是外部对象的特性,而仅仅是子控件的特性。 在类库中新添加Web自定义控件MyControl2 ,更新为如下内容: namespace MyComponents { [DefaultProperty(Text)] [ToolboxData({0}:MyControl2 runat=server/{0}:MyControl2)] [ParseChildren(false)] public class MyControl2 : WebControl { protected override void AddParsedSubObject(object obj) { if (!(obj is MyControl1)) return; base.AddParsedSubObject(obj); } } } 看下面的页面代码: %@ Register Assembly=MyComponents Namespace=MyComponents TagPrefix=WebUI % … WebUI:MyControl2 ID=MyControl2_1 runat=server Height=87px Width=209px WebUI:MyControl1 runat=server Text=child 0 / WebUI:MyControl1 runat=server Text=child 1 / WebUI:MyControl1 runat=server Text=child 2 / /WebUI:MyControl2/div 说明:虽然在工具箱中可以看到子控件MyControl1 ,但不能直接拖入到MyControl2。 7.2.2 建立分析器 虽然可以通过设置子控件方式为控件增加使用上的灵活性,但还有些不方便之处。一般地,子控件可表现为控件的子属性,这样会更加直观。例如: WebUI:MyControl2 runat
文档评论(0)