【asp源码栏目提醒】:网学会员,鉴于大家对asp源码十分关注,论文会员在此为大家搜集整理了“ASP.NET网络程序设计教程 教学PPT 作者 张恒 廖志芳 刘艳丽 第9章 用户控件与自定义控件 - 大学课件”一文,供大家参考学习!
第9章 用户控件与自定义控件本章主要内容
ASP.NET用户控件和自定义控件概述创建及使用用户控件设置用户控件用户控件编程9.1
ASP.NET用户控件和自定义控件概述 用户控件(User Control)是一种自定义的组 合控件,通常由系统提供的可视化控件组合而成。
在用户控件中不仅可以定义显示界面,还可以编写 事件处理代码。
当多个网页中包括有部分相同的用 户界面时,可以将这些相同的部分提取出来,做成 用户控件。
Web用户控件与完整的
ASP.NET网页 (即.aspx文件)非常相似,同时具有自己的用户界 面页和代码。
9.1.1 用户控件和普通的Web页比较 (1)用户控件文件的扩展名为 .ascx而不是.aspx; 代码的分离(隐藏)文件的扩展名是.ascx.cs而不 是.aspx.cs; (2)在用户控件中不能包含 、 和等HTML语言的标记; ( 3 ) 用 户 控 件 中 没 有 Page 指 令 , 而 是 包 含 Control 指 令 该 指 令 对 配 置 及 其 他 属 性 进 行 定 义; (4)用户控件可以单独编译,但不能单独运行。
只 有 将 用 户 控 件 嵌 入 到 .aspx 文 件 中 时 , 才 能 和
ASP.NET网页一起运行。
9.1.2 用户控件与自定义控件的比较 (1)自定义控件采用大多数应用程序可以使用的 动态链接库文件(.DLL),为创建可再分发的组件 而设计。
用户控件是为单个应用程序而设计的,用 户控件必须以源代码形式存在(.ascx文件)。
(2)自定义控件适用通过在编程方式生成的布局 中表现动态内容,用户控件的布局在.ascx文件创建 时声明,适用于固定布局的相对静态的内容。
(3)自定义控件提供很大程度的设计期支持功 能,如可以支持设计时的属性、方法;用户控件只 有很少的设计期支持,它并不在属性窗口中显示属 性和事件,也不能将其放到工具箱中。
9.1.3 用户控件的优点(1)可以将常用的内容或者控件以及控件的运行程序逻辑,设计为用户控件,然后便可以在多个网页中重复使用该用户控件,从而减少重复性的工作。
例如,网页上的导航栏,几乎每个页都需要相同的导航栏,这时可以将其设计为一个用户控件,在多个页中使用。
(2)如果网页内容需要改变时,只需修改用户控件中的内容,其他添加使用该用户控件的网页会自动随之改变,因此网页的设计以及维护变得简单易行。
9.2 创建及使用用户控件9.2.1 创建用户控件创建普通用户控件的一般需要如下几个步骤。
(1)创建一个新文件并为其指定一个扩展名为.ascx的文件名。
(2)在该页面的顶部创建一个Control指令,并指定要为控件(如果有)使用的编程语言。
(3)添加希望用户控件显示的控件。
(4)添加用户控件要执行的任务(如处理控件事件或从数据源读取数据)的代码。
(5)如果希望在用户控件和宿主页之间共享信息,需要在控件中创建相应的属性。
根据需要可以创建任何类的属性。
9.2.2 将用户控件添加至网页在网页中添加用户控件的步骤如下:(1)在解决方案资源管理器中,用鼠标单击要添加到网页的用户控件。
(2)按住鼠标左键,将用户控件拖曳到网页上,然后,释放鼠标左键即可,如图所示:9.2.3 在用户控件中添加用户控件 用户控件的使用可以减少开发人员的工作量,在设计用户控件时,可以将已创建好的用户控件添加到某个用户控件中。
本实例以开发一个学生毕业论文网站为实例,在开发过程中应用了在用户控件中添加用户控件的技巧。
实例:(1)Header.ascx控件。
Header.ascx控件用来实现界面头部的设计,如图所示,在这个界面的头部中主要实现用户登录和信息导航两个功能。
(2)UserLoginUC.ascx控件。
UserLoginUC.ascx控件用来实现用户登录,它由两个 TextBox 控 件 , 一 个 Button 控 件 , 两 个 Label控件组成,同将Web用户控件添加至网页的方法一样,将其拖曳至Header.ascx用户控件的适当位置上。
(3)Visitor.ascx控件。
Visitor.ascx控件用来实现此网站的信息导航,分别显示“首页”、“毕业论文”、“学生注册”和“帮助”,单击每个HypeLink控件,可链接到相应的URL地址。
9.3 设置用户控件9.3.1 访问用户控件的属性 在用户控件中,属性是一种有效的向类型使用者公开数据的字段,从类型使用者的角度来看,属性是一个public字段,通过实现一个属性,可以将使用者和实现细节相互隔离,同时还可以在属性被访问时提供数据有效性检查、跟踪等处理字段。
private string userName Hello 中国北京!//私有变量,外部无法访问public string str_userName//再定义下公有变量来读取私有变量 get return userName set userName value 9.3.2 访问用户控件中的服务器控件 程序开发人员可以在用户控件中添加各种控件,例如,Label控件、TextBox控件等,但当用户控件创建完成后,将其添加到网页中,在网页的后台代码中,不能直接访问用户控件中的服务控件的属性。
为了实现对用户控件中的服务器控件的访问,必须在用户控件中定义公有属性,并且利用GET访问器与SET访问器来读取和设置控件的属性。
public string str_Name //公有属性,访问“用户姓名”文本框 get return this.TextBox1.Text //返回“用户姓名”文本框的值 set this.TextBox1.Text value //设置“用户姓名”文本框的值9.3.3 将Web网页转化为用户控件 将现有的Web页转换为用户控件,对于提高代码的重用性来说,这是最佳的选择方案。
在程序开发过程中,当发现一个Web页会经常用到且使用的频率很高,并打算在整个应用程序中访问其功能,则可以对该页面略加改动,将其更改为一个用户控件。
将Web页转换为用户控件,这种技术一般分为将单文件
ASP.NET网页转换为用户控件和将代码隐藏
ASP.NET网页转换为用户控件两种情况。
9.4 用户控件编程9.4.1 用户控件设计 该控件实现用户登录功能,用户控件UserLoginUC.ascx的设计界面如图所示:9.4.2 界面设计 在页面Default.aspx上添加在9.4.1小节用户控件设计中创建的名称为MyUserLoginUC的用户控件UserLoginUC.ascx 。
其 中 , 注 册 用 户 控 件UserLoginUC.ascx的程序代码如下: 页面Default. aspx的部分HTML设计代码如下:9.4.3 事件设计 该 实 例 的 事 件 主 要 在 用 户 控 件UserLoginUC.ascx.cs中,实例中用到的用户名称和密码从数据库ShoppingDB中获取用户登录信息,连 接 数 据 库 和 读 取 数 据 的 操 作 在 函 数 SqlDataReader GetUserLoginstring sUserNamestringsPassword ;当用户输入名称和密码后,单击页面上的“用户登录”按钮,触发事件LoginBtn_Click1实现用户登录功能。
9.5 自定义控件 用户自己开发自定义控件只需要定义一个直接或间接从Control派生的类,并重写它的Render方法 即 可 。
System.Web.UI.Control 与System.Web.UI.WebControls. WebControls两个类是服务器控件的基类,Control类定义了所有服务器控件共有属性、方法和事件,其中包括控制控件执 行 生 命 周 期 的 方 法 和 事 件 , 以 及 ID 、UniqueID、Parent、ViewState和Controls(子控件集合)等属性。
用户可以重写从基类继承的属性、方法和事件,并可以将新的属性、方法和事件添加到自定义控件中,如前所述,可以使用重写Render方法来实现对HTML代码的输出。
具体步骤:(1)新建一个项目,添加一个名为SimpleControl的Web控件库项目 :( 2 ) 新 建 一 个 网 站 , 将 命 名 为 ch9_5 , 默 认 主 页 名 为Default.aspx,在ch9_5目录新建一个bin目录,将上面编译成的SimpleControl.dll和SimpleControl.pdb复制到该目录下,右键单击“解决方案资源管理器”中bin,选择“添加引用”命令打开对话框,如图所示:
上一篇:
ASPPHP程序转换系统
下一篇:
手机媒体营销分析