`
water84222
  • 浏览: 377272 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

ASP.NET的用户控件

阅读更多
本文介绍如何在ASP.NET中创建用户控件,控件属性的动态修改以及控件的事件出发机制。
==================================================================
简介
ASP.NET的服务端控件使得Web开发工作变得更为简单,功能更为强大。我们介绍过如何在ASP.NET页面中使用服务端控件。但是,如果服务端没有所要求的控件时该怎么办呢?

 

当然,ASP.NET不会给你变出一个莫须有的控件。事实上,可以动手作自己的控件来取代.NET提供的控件。这种控件就是用户控件,也正是本文讨论的话题。

编写第一个用户控件
有人认为,知道如何使用服务端控件可不一定说明编写用户控件是件容易的事。

事实上,编写一个基本用户控件(有时也称之为pagelets)并让ASP.NET页面象使用服务端控件那样使用这些控件的确是件简单的事。这里有一个简单示例:

basic.ascx
<p>
This is a user control... really!
</p>

这就是一个用户控件!看到这里,我想你会说我该不是喝醉了,头脑不清楚吧。但这段代码的确就是易于被使用的一个用户控件。尽管这个控件没有作什么事,却是关于什么是用户控件的一个很好说明。事情并不象想像得那么复杂。注意后缀.ascx,它告诉网页这是一个用户控件。它没有什么特别含义,只是不让IIS去直接执行这段代码。

现在我们来创建一个用户控件,看下面的例子:

basic.aspx
<%@ Page Language="VB" %>
<%@ Register TagPrefix="asp101samps" TagName="SomeText"
Src="basic.ascx" %>

<html>
<head>
<title>ASP.NET User Control Sample - Basic</title>
</head>
<body bgcolor="#FFFFFF">

<asp101samps:SomeText runat="server" />

</body>
</html>

这段代码输出标准HTML页面,显示用户控件里的文字而不是标记。
那么它是怎么实现的呢?关键就在注册(Register)说明。要注册控件,先要定义三个属性:

TagPrefix
定义控件位置的命名空间。有了命名空间制约,就可以在同一个网页里使用不同功能的同名控件。

TagName
指向所使用控件的名字。在同一个命名空间里的控件名是唯一的。控件名一般都表明控件的功能。

Src
指向控件的资源文件。资源文件使用虚路径("control.ascx" 或 "/path/control.ascx"),不能使用物理路径("C:\path\control.ascx.")。

控件注册之后,就可以象其它服务端控件一样被使用。通过定义目标前缀(TagPrefix)和目标名(TagName),就可以象使用服务端内建控件一样地进行使用。同时也确定了使用服务端运行(runat="server")方式。下面是网页调用用户控件的基本方式:
<TagPrefix:TagName runat="server" />


给用户控件增加属性并赋值
下面我给控件加上两个属性,一个是color,另一个是text。

properties.ascx
<script language="VB" runat="server">
Public Color As String = "black"
Public Text As String = "This is a user control... really!"
</script>

<p>
<font color="<%= Color %>">
<%= Text %>
</font>
</p>

这样就可以使用和改变控件的色彩和文字了。可以在初始化时赋值,还可以动态地修改这二个属性。

在同一个网页里可以重复调用这个控件并使用不同的属性值:
properties.aspx
<%@ Page Language="VB" %>
<%@ Register TagPrefix="asp101samps" TagName="SomeText"
Src="properties.ascx" %>

<script language="VB" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
UserCtrl1.Color = "green"
UserCtrl1.Text = "This control's properties were " _
& "set programmatically!"
End Sub
</script>

<html>
<head>
<title>ASP.NET User Control Sample - Properties</title>
</head>
<body bgcolor="#FFFFFF">

<asp101samps:SomeText runat="server" />

<asp101samps:SomeText Color="red" runat="server" />

<asp101samps:SomeText Text="This is quite cool!" runat="server" />

<asp101samps:SomeText Color="blue" Text="Ain't It?" runat="server" />

<asp101samps:SomeText id="UserCtrl1" runat="server" />

</body>
</html>


还想再好些,用户控件是否能够有事件句柄呢?
用户控件几乎可以作任何事。下面的代码示范控件如何触发Page_Load事件。有了事件句柄,就不用多写其它的维护代码来控制控件的运行。控件可以自己触发事件。

在下面的代码中,封装了一个ASP的textbox控件。我将我的控件名属性与textbox的内容挂钩。

events.ascx
<script language="VB" runat="server">
Sub Page_Load(Src As Object, E As EventArgs)
Dim strInitialText As String = "Please Enter a Name!"

If Page.IsPostBack Then
If txtName.Text = strInitialText
txtName.Text = ""
End If
Else
txtName.Text = strInitialText
End If
End Sub

Public Property Name As String
Get
Return txtName.Text
End Get
Set
txtName.Text = Value
End Set
End Property
</script>

Name: <asp:textbox id="txtName" runat="server" />

<asp:RequiredFieldValidator ControlToValidate="txtName"
id="valtxtName" Display="Dynamic" runat=server>
Please Enter a Name!
</asp:RequiredFieldValidator>


events.aspx
<%@ Page Language="VB" ClientTarget="downlevel" %>
<%@ Register TagPrefix="asp101samps" TagName="SomeText"
Src="properties.ascx" %>
<%@ Register TagPrefix="asp101samps" TagName="TextBox"
Src="events.ascx" %>

<script language="VB" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
txtLabel.Text = ""

' The textbox control handles it's own stuff
' in it's own Page_Load event handler.
End Sub

Sub btnSubmit_Click(Sender As Object, E As EventArgs)
' Sets the label to the textbox's text
txtLabel.Text = txtName.Name

' I don't need to worry about validation since
' my user control does it for me.
End Sub
</script>

<html>
<head>
<title>ASP.NET User Control Sample - Validation & Events</title>
</head>
<body bgcolor="#FFFFFF">

<form runat="server">

<asp101samps:TextBox id="txtName" runat="server" />

<br />

<asp:button id="btnSubmit" onClick="btnSubmit_Click"
text="Submit" runat="server" />

</form>

<asp101samps:SomeText id="txtLabel" runat="server" />

</body>
</html>

这就是关于用户控件和应用的说明。无论你认为它是否简单,它肯定比使用传统ASP要容易。

下面可以下载本文代码。

http://www.ChinaOK.net/down/200204221838030.zip
 

分享到:
评论

相关推荐

    ASP.NET用户控件和自定义控件

    用户控件是ASP.NET中的基本自定义UI元素,它是通过将多个标准ASP.NET控件组合在一起,形成一个复合控件来实现的。用户控件可以看作是网页的微型版,具有自己的HTML、服务器控件和脚本。创建用户控件的主要步骤包括:...

    asp.net用户控件

    在ASP.NET中,用户控件(User Control)是一种强大的功能,它允许开发者创建自定义的、可重用的UI组件,极大地提升了开发效率和代码复用性。标题“asp.net用户控件”直接指出了我们要讨论的核心技术,即在ASP.NET...

    asp.net用户控件视频

    asp.net 用户控件的视频 asp.net 用户控件的视频

    ASP.NET服务器控件与组件开发电子书及示例代码

    ASP.NET服务器控件与组件开发电子书及示例代码ASP.NET服务器控件与组件开发电子书及示例代码ASP.NET服务器控件与组件开发电子书及示例代码ASP.NET服务器控件与组件开发电子书及示例代码ASP.NET服务器控件与组件开发...

    ASP.NET分页控件源码

    在这个特定的场景中,我们关注的是"ASP.NET分页控件源码",它是为了帮助开发者在网页上实现高效、用户友好的数据浏览功能。 分页控件是ASP.NET Web Forms中常见的一种组件,它主要用于处理大量数据时,以防止一次性...

    Asp.net 验证码控件

    在Asp.net开发中,验证码控件是一种常用的安全机制,用于防止自动机器人或者恶意脚本进行非法操作,如批量注册、频繁提交表单等。它通常要求用户输入图像上显示的一串随机字符,以此来验证用户是真实的人而不是程序...

    asp.net Ajax控件

    ASP.NET AJAX控件是微软为Web开发者提供的一种增强网页交互性和用户体验的技术。它结合了ASP.NET框架的强大功能和JavaScript库(Microsoft AJAX Library)的灵活性,允许开发者创建具有局部刷新、异步更新和丰富用户...

    ASP.NET验证控件和用户控件

    网页制作ASP.NET验证控件和用户控件.ppt

    Asp.Net开发控件

    随着技术的发展,Asp.Net控件库也在不断更新和完善,不仅包含了传统的WebForms控件,还扩展到了MVC框架。 在Asp.Net WebForms中,开发者可以使用诸如Button、TextBox、Label、DropDownList、GridView等常见控件。...

    asp.net基础控件技巧教程

    asp.net基础控件技巧教程asp.net基础控件技巧教程asp.net基础控件技巧教程asp.net基础控件技巧教程asp.net基础控件技巧教程asp.net基础控件技巧教程asp.net基础控件技巧教程asp.net基础控件技巧教程asp.net基础控件...

    Web程序设计实验1ASP.NET标准控件和验证控件

    1、熟练掌握ASP.NET服务器控件的使用。 2、熟练掌握验证控件的使用。 二、实验内容 1、编写一个Web应用程序Login,该程序用于检查用户登录信息。当用户输入正确的用户名和密码时,显示登录成功的消息。否则,显示...

    asp.net服务器控件高级编程(带源文件)

    总之,“ASP.NET服务器控件高级编程”教程会详细讲解这些概念和实践技巧,帮助VB.NET开发者更好地利用服务器控件构建功能强大、用户体验良好的Web应用。通过学习和实践,你可以掌握如何高效地利用这些工具来提升你的...

    ASP.NET相册控件

    ASP.NET相册控件是一种用于Web应用程序的组件,它允许开发者在网页上展示和管理图片集,为用户提供直观、互动的相册体验。这个控件是独立的,意味着它可以独立于其他特定框架或库工作,提供了高度的自定义性和灵活性...

    ASP.NET 导航控件

    在ASP.NET 2.0版本中,引入了一组强大的导航控件,极大地增强了用户界面的交互性和可用性。这些控件允许开发者轻松创建功能丰富的网站导航结构,使用户能够方便地浏览和定位网页内容。 导航控件包括以下几种: 1. ...

    ASP.NET时间控件

    本文将深入探讨ASP.NET中的时间控件,特别是"好用的ASP.NET控件"——My97DatePicker。 My97DatePicker是一款高度自定义的JavaScript日期选择插件,它可以与ASP.NET无缝集成。这个控件以其美观的界面、灵活的配置...

    ASP.NET上传控件

    ASP.NET上传控件是.NET框架下用于处理用户在网页上上传文件的一种组件。在ASP.NET应用中,上传控件使得用户能够方便地将本地文件上传到服务器,这在许多应用场景中都是必需的功能,例如文件共享、图片上传或文档提交...

    asp.net分页控件

    asp.net分页控件asp.net分页控件

    一个很好用的asp.net上传控件

    ASP.NET上传控件是网页应用开发中的重要组成部分,它允许用户在服务器端处理大量数据时上传文件。在本文中,我们将深入探讨“一个很好用的ASP.NET上传控件”,了解其特点、使用方法以及如何在项目中集成和操作。 ...

    Asp.Net翻页控件

    Asp.Net翻页控件,方便使用。Asp.Net翻页控件,方便使用。Asp.Net翻页控件,方便使用。Asp.Net翻页控件,方便使用。

    ASP.NET服务器控件

    在ASP.NET中,服务器控件是用于构建动态Web应用程序的主要工具,它们允许开发者通过直观的方式创建交互式的用户界面。服务器控件在客户端和服务器之间扮演着桥梁的角色,处理用户的输入,执行业务逻辑,并更新页面...

Global site tag (gtag.js) - Google Analytics