20编程21编程爱好者22vb编程,23数控编程24编程中国25编程论坛26编程语言27游戏编程28编程软件下载29编程工具30socket编程31网络编程32编程器33c语言编程,34flash编程35编程软件36数控车床编程37windows编程38编程入门,39windows核心编程40cnc编程41vc 编程,42linux 编程43asp编程44vb编程实例45串口编程46手机编程47编程教程48plc编程,49单片机编程50vc 网络编程51excel编程,52unix网络编程53编程学习,54编程之道55数据库编程56单片机编程器57黑客编程58计算机编程59网页编程60嵌入式编程,61编程高手箴言62flash编程教程63vfp编程64windows网络编程,65编程基础66c语言编程实例67c语言编程软件68vf编程69shell编程,70vb数据库编程71matlab编程,72c语言编程工具73编程思想74php编程,75c编程76jsp编程77电脑编程技巧与维护,78三菱plc编程软件,79vb编程软件下载80pb编程81数控编程实例82asp编程工具,83c专家编程,84win32编程85数控铣床编程86asp.net高级编程,,87vc 数据库编程88vba编程89jsp高级编程90c语言编程宝典,91unix环境高级编程;92编程珠玑93delphi编程94delphi数据库编程95vb编程教程96单片机编程软件
1编程爱好者网站2vb编程网站,3电子商务网站编程4游戏编程网站5最大的编程网站6网站编程软件7可编程逻辑中文网站8网站 编程 语言9网站编程 数据库,10jsp网站编程11asp编程网站12网站编程电子书13好的编程网站,14c语言编程网站15编程门户网站16如何学习网站编程17百度网站的编程语言18vb编程乐园网站指南19wince 编程网站
1asp.net2asp教程,3asp源码4asp免费空间5asp论坛6asp代码7asp源代码8asp下载,9asp源码下载10asp木马11asp.net教程12asp学习13什么是asp14asp空间,15admin.asp dir16asp程序17asp教程下载18asp.net 2.019asp整站程序,20asp文件21十天学会asp22asp入门23asp源程序24asp实例25asp函数26asp服务器27asp.net论坛28asp id,29asp整站下载30asp网站31asp论坛下载32asp源代码下载,33asp整站34asp技术35asp access36asp.net源码37asp简介38asp免费空间申请39asp.net下载,40asp留言板41asp sql42asp 数据库43asp站长助手44asp连接数据库45asp留言本,46asp.net教程下载47asp分页48asp格式49asp论坛程序50asp.net源代码51asp软件52asp模板53asp session54asp语法,55如何打开asp文件56asp解密57asp编程58asp.net实例,59asp实例教程60asp程序下载61asp计数器62asp.net入门,63asp运行环境64asp基础教程65apache asp66asp入门教程,67asp编辑器68asp组件69asp连接access70conn.asp71asp书籍,72asp论文73asp工具74asp文件上传75asp探针76asp原代码下载77asp include78user wantpws.asp79asp split,80asp fso81asp网页制作82printpage.asp83什么是asp.net,84index.asp85asp.net datagrid86asp基础87asp replace88asp代码下载89asp新闻系统
1php论坛2免费php空间,3php下载4php源码5php mysql6php教程7php文件8php空间9apache php10什么是php11apache php mysql12php学习13php论坛下载14iis php15php cms16php入门17php blog18php手册,19php代码20php整站程序21php session22php安装23php源码下载24php配置25php源代码26php cookie27php网站28iis php mysql29php编程30php留言板31php探针32php注入33php.ini34php运行环境35index.php36php教程下载,37php论坛程序38php 文件上传39php服务器40php环境41php 函数;42php格式43php编辑器44php editor45如何打开php文件46php access47十天学会php48php模板49php xml;50php程序51php留言本52php文件怎么打开53php技术54ajax php55php简介56php注入工具57打开php文件58php语言59php mail;60php软件;61免费php mysql空间62php self63php 数组.64php分页,65php nuke66php阅读器67免费php空间申请68国外免费php空间69php程序下载70php 正则表达式71asp php,72php网站管理系统73php程序设计74php是什么文件75php 实例76php 开发工具77php 验证码78php官方网站79php学习资料
1jsp教程2jsp源码3jsp论坛4什么是jsp5jsp源代码6jsp空间7jsp学习8jsp文件9jsp mysql,10jsp入门11jsp连接数据库12jsp技术13eclipse jsp14jsp分页15jsp源代码下载16jsp access17jsp教程下载18jsp开发工具,19jsp代码20jsp简介21jsp环境配置22jsp连接mysql,23jsp实例24免费jsp空间25jsp配置26jsp session,27jsp运行环境28jsp下载29jsp网站30jsp include31jsp编程,32jsp介绍33jsp 数据库34jsp设计35jsp servlet36jsp标签37jsp应用开发详解38jsp 中文39jsp oracle40jsp论文41jsp 文件上传,42jsp高级编程43jsp源码下载44jsp 乱码45jsp开发46jsp分页显示47jsp sql48jsp连接sql49jsp 页面跳转50jsp request51eclipse开发jsp52iis jsp53jsp开发环境54jsp sqlserver,55jsp cookie56jsp服务器57jsp连接access58jsp毕业论文59jsp新闻发布系统60jsp留言板61jsp 电子书62jsp forward63jsp中文网64tomcat jsp65jsp语法66jsp留言本67asp jsp,68jsp import69jsp源程序70jsp基础71jsp毕业设计,72jsp格式73jsp 中文乱码,74jsp开发实例75jsp书籍76jsp论坛下载77jsp 上传,78jsp计数器79jsp 注释80jsp电子教程81jsp 保存用户名密码,82jsp的优点83jsp软件下载84jsp语言85jsp代码下载86jsp blog87jsp 打印88jsp手册

思顿科技-专业网站制作指南、网页设计制作教程、免费网页制作素材下载、免费学习网页制作指南,专业网站建设服务、网站制做指南、免费网页制作指南、网页制作服务、免费空间域名服务、
首页
网页教程
网页素材
收录查询
工具下载
网站欣赏
网站论坛
免费博客
建站服务

ASP.NET的用户控件
你当前的位置:网站制作指南 --> 技术文档全集 (www.STasp.com)

本文介绍如何在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:PATHCONTROL.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要容易。

 
| 关于我们 | 联系我们 | 业务合作 | 友情链接 | 网站地图 |
版权所有©思顿科技-专业网站制作指南2004-2006 在线技术支持- QQ:63127313