1 / 14

第 8 章 创建用户控件和自定义控件

第 8 章 创建用户控件和自定义控件. 在 ASP.NET 中,除了内置的 HTML 服务器控件和 Web 服务器控件之外,用户还可以根据自己的实际需要,编写自定义的控件。本章将介绍有关于创建用户控件和自定义控件的知识。通过本章的学习,读者将掌握用户控件和自定义控件的创建和使用。. 8.1 用户控件. 用户控件的扩展名为“ ascx” ,与“ aspx” 在结构上相似,是指页面中加载的功能块模块。只是用户控件不能单独作为页面运行,必须嵌入到 aspx 页面中,或者嵌入到其他用户控件中使用。. 8.1.1 用户控件概述.

sari
Download Presentation

第 8 章 创建用户控件和自定义控件

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第8章 创建用户控件和自定义控件 • 在ASP.NET中,除了内置的HTML服务器控件和Web服务器控件之外,用户还可以根据自己的实际需要,编写自定义的控件。本章将介绍有关于创建用户控件和自定义控件的知识。通过本章的学习,读者将掌握用户控件和自定义控件的创建和使用。

  2. 8.1 用户控件 • 用户控件的扩展名为“ascx”,与“aspx”在结构上相似,是指页面中加载的功能块模块。只是用户控件不能单独作为页面运行,必须嵌入到aspx页面中,或者嵌入到其他用户控件中使用。

  3. 8.1.1 用户控件概述 • 在一个大系统中,有时候会只能几个*.aspx页面,其余的都是做成*.ascx页面,如网站的导航、网页的头部和底部。这样可以增强页面之间的藕合性,一个用户控件*.ascx都作为一个独立的功能块。需要修改某一功能时,只需要修改相应的*.ascx文件。(具体内容请参照书。)

  4. 8.1.3 将Web窗体页转化为用户控件 • 从前面小节的几个示例代码可以看出,用户控件比Web窗体页面少了<html>、<body>和<form>等元素,并且将aspx页面中的@Page指令变成了@Control指令。 • 知道了用户控件和Web窗体页面的差别,就可以通过添加、删除和修改相应的元素,来实现Web窗体页面和用户控件的相互转化。

  5. 8.2 自定义控件 • 所谓自定义控件,就是指编写好后,生成一个dll文件,可以添加到工具箱中,然后直接在页面上使用的控件。由于自定义控件的编写,使用到的知识面比较多。所以在本节中,笔者只带领各位读者,做一个最简单的自定义控件,并通过制作过程,来对自定义控件的各方面进行逐步了解。

  6. 8.2.1 制作一个简单的自定义控件 • (具体内容请参照书。)

  7. 8.2.2 对自定义控件应用控件公共属性 • 从System.Web.UI.WebControls.WebControl命名空间中,可以派生出要呈现用户界面(UI)元素的控件,或包含任何其他客户端可见元素的控件。如果控件要呈现在客户端浏览器中不可见的元素,则应从System.Web.UI.Control派生该控件。WebControl类从Control类派生,并添加了与样式相关的属性,如Font、ForeColor和BackColor。此外,一个从WebControl派生的控件,也将自行拥有ASP.NET的主题功能。(具体内容请参照书。)

  8. 8.2.3 无需编译测试自定义控件 • 无需将自定义控件编译为程序集,只需要借助ASP.NET的动态编译功能,就可以对页中的自定义控件进行测试。大家都知道,ASP.NET网站根目录下,通常有一文件夹App_Code,该目录中放置的代码,可以被ASP.NET动态编译。这样就可以从页面中,访问App_Code中源文件中的类,而无需将其手动编译为程序集。如果将控件的源文件放入了App_Code目录,则对控件的代码所做的任何更改,都能立即在使用这些控件的页中反映出来。(具体内容请参照书。)

  9. 8.2.4 将控件编译为程序集 • 可以使用命令行工具csc.exe,来将所创建的类编译成dll文件,方法如下所示。(具体内容请参照书。)

  10. 8.2.5 控件状态 • 在ASP.NET 2.0中,引入与视图状态类似的控件状态,但却在功能上独立于视图状态。控件状态是专门用来对控件的重要数据进行存储的,比如一个页面控件的页数,页面回发时,必须用到这些数据,才能使控件正常工作。

  11. 8.2.6 自定义控件的属性 • 控件的属性,包含了简单属性和子属性。 • 简单属性概括起来,就是一个类型为字符串,或者容易被映射到字符串的类型属性。简单属性在控件的开始标记上,会自行保留为属性。比如String类型的属性就是简单属性。通过添加代码,可以将简单属性存储在视图状态中,以在回发期间进行状态管理。

  12. 8.3 常见问题 • 用户控件和自定义控件用来减少代码的重复,提高控件的使用率。它们使用过程中常遇到的问题如下所示。

  13. 8.3.1 用户控件和自定义控件哪个对开发者要求比较高 • 答:自定义控件对开发者的要求更高一点。因为用户控件其实和页面只是有几个指令不同,其他的都相同。读者完全可以用制作页面的方法,来制作功能强大的用户控件。而自定义控件,先别说没有可视化的编辑环境,而且还要用到其他如继承、重载等特性,还要定义控件的其他属性、方法和事件等。所以相对来说,对开发者要求比较高一点。

  14. 8.3.2 能以编程的方式来控制用户控件进行加载吗 • 答:完全可以以编程的方式,来控制控件的动态加载,参考代码如下所示。 • UserControl mycontrols=(UserControl)LoadControl("MyControls.ascx"); //声明用户控件 • Controls.Add(mycontrols); //添加

More Related