当前位置: 首页 > 文章教程  > 计算机与互联网 > 网络编程

5.4用户控件

8/31/2020 9:52:39 PM 人评论

5.4用户控件

5.4 用户控件

用户控件是ASP.NET中很重要的部分,使用它可以提高程序代码的复用性,即用户控件在网页、用户控件或控件的内部都可以再次使用。ASP.NET用户控件与ASP.NET Web窗体文件类似,同时具有用户界面页和代码。用户控件可以像Web窗体一样包含对其内容进行操作的代码。

5.4.1 用户控件概述

一个用户控件就是一个简单的ASP.NET页面,不过它可以被另外一个ASP.NET页面包含进去。用户控件存放在文件扩展名为.ascx的文件中,典型的.ascx文件中的代码如下:

alt

上述代码中第1行代码和.aspx文件中一样,没有什么区别,只是把Page指令换成了Control指令,第2行添加了一个服务器标签控件,显示文本Hello World。

从以上.ascx文件的代码可以看出,用户控件代码格式和.aspx文件中的代码格式非常相似,.ascx文件中没有<html>标记,也没有<body>标记和<form>标记,因为用户控件要被.aspx文件包含,而在.aspx文件只能包含一个该类标记。一般说来,用户控件和ASP.NET网页有如下区别:

● 用户控件的文件扩展名为.ascx。

● 用户控件中没有“@Page”指令,只有“@ Control”指令,该指令对配置及其他属性进行定义。

● 用户控件不能作为独立文件运行。而必须像处理控件一样,将它们添加到ASP.NET页中。

● 用户控件中没有html、body或form元素。这些元素必须位于宿主页中。

用户控件提供了这样一种机制,它使得程序员可以非常容易地建立被ASP.NET页面使用或者重新利用的代码部件。在ASP.NET应用程序当中使用用户控件的一个主要的优点是用户控件支持一个完全面向对象的模式,使得程序员有能力去捕获事件。而且,用户控件支持程序员使用一种语言编写ASP.NET页面其中的一部分代码,而使用另外的一种语言编写ASP.NET页面另外一部分代码,因为每一个用户控件都可以使用和主页面不同的语言来编写。

5.4.2 创建用户控件

如果想要在程序中实现用户控件的功能,首先要做的是创建一个后缀名为.ascx的用户控件,这一过程与创建普通的aspx窗体页面并没有多大的不同。但是,当用户访问页面时,该用户控件是不能被用户直接访问的,所以必须在Web窗体中通过注册的方式调用创建成功的用户控件。

在Visual Studio 2012中创建一个用户控件的具体步骤如下所示:

01 启动Visual Studio 2012,创建一个ASP.NET空Web应用程序。

02 用鼠标右键单击“网站项目”名称,在弹出的如图5-25所示的快捷菜单中选择“添加”|“添加新项”命令。

alt

图5-25 快捷菜单命令

03 弹出如图5-26所示的“添加新项”对话框。在该对话框中选择“已安装”模板下的“Visual C#”模板,并在模板文件列表中选中“Web用户控件”选项,然后在“名称”文本框输入该文件的名称WebUserControl1.ascx,最后单击“添加”按钮。

alt

图5-26 “添加新项”对话框

04 此时解决方案资源管理中的项目下会生成如图5-27所示的WebUserControl1.ascx页面,它包括一个WebUserControl1.ascx.cs文件,用于编写后台代码。

alt

图5-27 生成.ascx文件

05 单击WebUserControl1.ascx文件,在文件中生成的初始代码如下:

alt

上面的代码中是用户控件的界面定义代码,“@Control”指令说明这是一个用户控件的文件。CodeFile属性指明了用户控件后台代码文件是WebUserControl.ascx.cs,AutoEventWireup属性设置控件的事件自动匹配,Inherits属性说明该控件的名称为WebUserControl。

06 接着就可以设计用户控件的外观,切换到“视图设计器”,从“工具箱”拖动一个Label控件、一个TextBox控件、一个Button控件到如图5-28所示的“设计视图”中。如果需要添加用户控件的事件,可以在WebUserControl.ascx.cs文件的后台代码中进行编写。

alt

图5-28 用户控件外观

5.4.3 使用用户控件

如果要使用上面创建的用户控件,应该将用户控件包含到ASP.NET网页中,所以,下面必须创建一个ASP.NET Web窗体,然后进入该窗体的“视图编辑”界面,打开“设计视图”将创建好的用户控件直接拖曳到要在该窗体放置的位置即可,如图5-29所示。

alt

图5-29 包含用户控件

此时,切换到Default.aspx的“源视图”,会看到如下所示的注册和声明用户控件的代码。

alt

上面的代码中第1行是注册用户控件到页面的代码。其中“@Register”指令提供了ASP.NET在运行期间检索控件所需要的所有信息。Src属性是用户控件的虚拟路径,如果用户控件与包含它的页面在相同的目录中,那只需提供文件名,如果用户控件在另一个目录中,那么需要提供相对或绝对路径。Tagname属性表示当前页面中关联到用户控件的名称,可以使用任意的名称,在页面上创建用户控件的实例时要使用这个名称。Tagprefix属性表示当前页面中关联到用户控件的命名空间(以便多个同名的用户控件可以相互区分),可以使用任意字符串。如果使用相同的Tagname向页面添加另一个用户控件,仍然可以使用Tagprefix来区分这两个控件。

第2行是当在页面注册了用户控件后,Web页面会把用户控件添加到页面的标记。可以在一个页面中多次使用相同的用户控件。唯一的要求就是每个实例具有唯一的ID。

至此,就可以在程序中使用该用户控件了。

用户控件在实际的编程中使用较为广泛,可以把Web程序中经常需要使用到的功能制作成一个用户控件,以后在其他Web程序中可以进行重复使用,比如常见网站的登录或者是注册功能。下面通过一个实例来学习用户控件的开发。

【实例5-13】用户控件的使用

本例将开发一个在网站中通用的用户控件,其功能是在网站中显示当前系统的时间,具体实现步骤如下:

01 启动Visual Studio 2012,创建ASP.NET Web空应用程序,命名为“实例5-13”。

02 用鼠标右键单击“实例5-13”名称,在弹出的菜单中选择“添加”|“添加新项”命令,弹出“添加新项”对话框。创建名为MyControl.ascx的Web用户控件。

03 双击MyControl.ascx文件,进入“视图编辑”界面,打开“设计视图”,进入“源视图”对话框,在编辑区中的<form></form>标记之间编写如下代码:

alt

上面的代码添加了一个服务器标签控件Label1。

04 单击MyControl.ascx.cs文件,编写以下代码:

alt

上面的代码中第1行定义处理页面Page加载事件Click的方法。第2行调用DataTime对象的Now方法获得当前系统的时间。第3行~第9行获得当前时间的年、月、日、时、分、秒和星期几。第11行~第24行判断当前时间是星期几并转换为中文。第25行拼接显示当前时间的字符串。第26行将字符串显示在标签控件上。

05 在“实例5-13”中创建一个名为Default.aspx的窗体。

06 单击Default.aspx文件,进入“视图编辑”界面,打开“源视图”对话框,在编辑区中编写如下代码:

alt

上面的代码中第2行注册用户控件。第6行设置页面每秒钟自动进行刷新。第12行把用户控件添加到页面Web页面。

07 按快捷键Ctrl+F5运行程序,如图5-30所示。

alt

图5-30 运行效果

相关教程

共有条评论 网友评论

验证码: 看不清楚?