通行证: 用户 密码 域名空间  下载中心 社区论坛 信息公告 MY小屋
联系我们
设为首页
加入收藏

 

QQ,ASP,PHP,JSP,XML,SQL,.Net,编程 程序 网页图象 建站经验 私服
首页 | 新闻资讯 | 编程开发 | 网页设计 | 图形图象 | 网络媒体 | 网站模板 | 数 据 库 | 投稿
论坛 | 操作系统 | 系统优化 | 网络安全 | 黑客技术 | 硬件学堂 | 硬件报价 | 服 务 器 | 地图
专题 | 应用软件 | 聊天通讯 | Q Q 专栏 | 建站经验 | 在线工具 | 站长Club | 注 册 表 | 旧版
社会 | 游戏娱乐 | 设计欣赏 | 疑难解答 | 社区论坛 | 韩国素材 | 素材图库 | 广告服务 | 服务
当前位置:首页>>编程开发>>NET专区>>正文 新版上线![旧版]
注:打开慢时请稍等

Web 窗体用户控件

http://www.iyit.net  日期:2006-8-18 17:39:39  来源:  点击:
参加讨论用户控件介绍

除了 ASP.NET 提供的内置服务器控件外,还可以使用已学会的编写 Web 窗体页的相同编程技巧轻松地定义自己的控件。实际上,只需做少量的修改,几乎任何 Web 窗体页即可在其他页中作为服务器控件重用(注意,用户控件是 System.Web.UI.UserControl 类型,该类型直接从 System.Web.UI.Control 继承)。用作服务器控件的 Web 窗体页简称为用户控件。作为约定,使用 .ascx 扩展名指示这样的控件。这样可以确保用户控件的文件不能作为独立的 Web 窗体页执行(您会略微发现在用户控件和 Web 窗体页之间有很少但很重要的差异)。用户控件通过 Register 指令包括在 Web 窗体页中。

<%@ Register TagPrefix="Acme" TagName="Message" Src="pagelet1.ascx" %>

TagPrefix 确定用户控件的唯一命名空间(以便多个同名的用户控件可以相互区分)。TagName 是用户控件的唯一名称(可以选择任何名称)。Src 属性是用户控件的虚拟路径,例如“MyPagelet.ascx”或“/MyApp/Include/MyPagelet.ascx”。注册了用户控件后,可以像放置普通的服务器控件那样,将用户控件标记放置在 Web 窗体页中(包括 runat="server" 属性):

<Acme:Message runat="server"/>

下面的示例显示导入到另一 Web 窗体页中的用户控件。注意,本例中的用户控件只是一个简单的静态文件。

 
VB Pagelet1.aspx

[运行示例] | [查看源代码]


公开用户控件属性

当 Web 窗体页被视为控件时,该 Web 窗体的公共字段和方法也被提升为此控件的公共属性(即标记属性)和方法。下面的示例显示前一用户控件示例的扩展,添加了两个公共 String 字段。注意,这些字段可以在包含页中以声明方式或编程方式设置。

 
VB Pagelet2.aspx

[运行示例] | [查看源代码]

除了将公共字段提升为控件属性外,还可以使用属性语法。属性语法具有能够在设置或检索属性时执行代码的优点。下面的示例说明一个 Address 用户控件,该控件在内部包装了 TextBox 控件的文本属性。这样做的优点是控件可以无偿继承 TextBox 控件的自动状态管理功能。

注意,在包含 Web 窗体的页上有两个 Address 用户控件,它们分别将 Caption 属性设置为“Billing Address”和“Shipping Address”。用户控件的真正威力在于这种可重用性。

 
VB Pagelet3.aspx

[运行示例] | [查看源代码]

另一个有用的用户控件是用于收集用户名和密码的 Login 控件。

 
VB Pagelet4.aspx

[运行示例] | [查看源代码]

在该示例中,窗体验证控件被添加到 Login 用户控件。

 
VB Pagelet5.aspx

[运行示例] | [查看源代码]


在用户控件中封装事件

用户控件参与请求的整个执行生存期,方式与普通的服务器控件类似。这意味着用户控件可以处理自己的事件,并封装来自包含 Web 窗体页的一些页逻辑。下面的示例说明一个在内部处理自己的回发的产品清单用户控件。注意,用户控件本身不具有包装它的 <form runat="server"> 控件。由于一页上只能有一个窗体控件(ASP.NET 不允许嵌套的服务器窗体),因此需要包含 Web 窗体页负责定义该控件。

 
VB Pagelet6.aspx

[运行示例] | [查看源代码]


以编程方式创建用户控件

正如可以编程方式创建普通的服务器控件一样,也可以这样创建用户控件。页的 LoadControl 方法用于加载用户控件,并传递用户控件源文件的虚拟路径:

Dim c1 As Control = LoadControl("pagelet7.ascx")
CType(c1, (Pagelet7VB)).Category = "business"
Page.Controls.Add(c1)
C# VB JScript  

用户控件的类型由 Control 指令上的 ClassName 属性决定。例如,以文件名“pagelet7.ascx”保存的用户控件被分配强类型“Pagelet7CS”,如下所示:

由于 LoadControl 方法返回 System.Web.UI.Control 类型,因此必须将其转换为适当的强类型以便设置控件的各属性。最后,用户控件被添加到基页的 ControlCollection

 
VB Pagelet7.aspx

[运行示例] | [查看源代码]

重要说明 只有当为用户控件包括了 Register 指令时,用户控件的强类型才能由包含 Web 窗体页使用(即使没有实际声明的用户控件标记)。

本节小结

  1. 用户控件使开发人员能够使用编写 Web 窗体页的相同编程技巧轻松地定义自定义控件。
  2. 作为约定,用 .ascx 文件扩展名指示这样的控件。这样可以确保用户控件文件不能作为独立的 Web 窗体页执行。
  3. 用户控件通过 Register 指令包括在另一 Web 窗体页中,该指令指定 TagPrefixTagNameSrc location
  4. 注册了用户控件后,可以像普通的服务器控件那样将用户控件标记放置在 Web 窗体页中(包括 runat="server" 属性)。
  5. 在包含 Web 窗体页中将用户控件的公共字段、属性和方法提升为该控件的公共属性(标记属性)和方法。
  6. 用户控件参与每个请求的整个执行生存期,并且可以处理自己的事件,封装来自包含 Web 窗体页的一些页逻辑。
  7. 用户控件不应包含任何窗体控件,而应依靠其包含 Web 窗体页在必要时包括窗体控件。
  8. 可以使用 System.Web.UI.Page 类的 LoadControl 方法以编程方式创建用户控件。用户控件的类型由 ASP.NET 运行库决定,遵循约定文件名_扩展名
  9. 只有当为用户控件包括了 Register 指令时,用户控件的强类型才能由包含 Web 窗体页使用(即使没有实际声明的用户控件标记)。

编辑: [发送给好友] [打印本页] [关闭窗口] [返回顶部]
上一篇:服务器控件窗体验证
下一篇:没有了
转载请注明来源:www.iyit.net
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。

 相关文章
最新更新 热点排行 推荐新闻
Web 窗体用户控件
服务器控件窗体验证
对控件应用样式
使用服务器控件
Web 窗体介绍
Web 窗体用户控件
服务器控件窗体验证
对控件应用样式
使用服务器控件
Web 窗体介绍
微软曝Vista系统“恢复删除”技术机密
Linux关键程序员称工作太无趣 跳槽谷歌
雅虎邮件存致命漏洞 可被黑客完全控制
韩国好日子游玩网站
韩国女性生活保健类网站
对控件应用样式
Web 窗体用户控件
服务器控件窗体验证
使用服务器控件
Web 窗体介绍
WIN XP蓝屏代码大全
MSN监听软件下载热 轻松监视局域网隐私
WinRAR将推出免费正版序列号!
让WinRAR汗颜的压缩软件UHARC
备份软件GHOST使用教程
[JAVA]十四种Java开发工具点评
初学java常用开发工具介绍
Win XP操作系统优化精髓
XP中重新安装或修复IE6的三种方法
轻易破解Winrar,Winzip密码
在ASP.net中保存/取出图片入/从SQL数据
一个.net 压缩位图至JPEG的代码
ASP.NET2.0数据库入门之常见错误
在ASP.NET中防止注入攻击
用ASP.NET开发Web服务的五则技巧
Win Powershell遭遇病毒 最好升级软件
SiteAdvisor 助你远离恶意网站
提升流量 站长应该做的五件事
XP中重新安装或修复IE6的三种方法
XP下Asp.net访问被拒绝
教你封杀FSO躲避FSO木马的侵扰
让WinRAR汗颜的压缩软件UHARC
巧用Ghost擦去硬盘
WinRAR将推出免费正版序列号!
25种方式给网站添加优质内容
 友情链接
设置首 页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyrights ? 2004-2006 iYiT.Net All Rights Reserved.
网站合作、广告联系QQ:147007642、466949678
易特网络技术 点击这里给我发消息