欢迎
游客
,
注册
|
登录
|
会员
|
界面
|
简洁版本
|
在线
|
帮助
闪客动漫天地论坛
闪客动漫天地论坛
设计乐园
彩信制作乐园
开发和使用自定义服务器控件 (二)
本主题被查看796次, 共1个帖子, 1页, 当前为第
1
页 选择页数: 1 跳转到第
页
上一主题
下一主题
标题: 开发和使用自定义服务器控件 (二)
女女
注册会员
UID: 309683
来自:
精华:
0
积分: 54
帖子: 54
注册: 2007-6-18 15:03:00
状态:
离线
威望: 0.00
金钱: 12.00 元
发短消息
用户资料
树型
回复
引用
只看楼主
2007-06-19 09:27
开发和使用自定义服务器控件 (二)
注意
通常,在从 WebControl 派生控件并呈现单个元素时,应重写 RenderContents 方法(而不是 Render 方法),以呈现控件标记中的内容。在呈现控件及其样式属性的开始标记之后,WebControl 的 Render 方法将调用 RenderContents。如果重写 Render 方法以写入内容,则控件将丢失生成到 WebControl 的 Render 方法中的样式呈现逻辑。有关呈现从 WebControl 派生的控件的更多信息,请参见 Web 控件呈现示例。
应用于 WelcomeLabel 的属性包含由公共语言运行库和设计时工具使用的元数据。
在类级别上,通过以下属性标记 WelcomeLabel :
AspNetHostingPermissionAttribute 是代码访问安全属性。该属性使 JIT 编译器检查链接到 WelcomeLabel 的代码是否具有 AspNetHostingPermission 权限。所有的公共 ASP.NET 类均使用此属性标记。应将 AspNetHostingPermissionAttribute 应用于控件,以对部分受信任的被调用方进行安全检查。
DefaultPropertyAttribute 是设计时属性 (Attribute),它指定控件的默认属性 (Property)。在可视化设计器中,当页开发人员在设计图面上单击控件时,属性浏览器通常突出显示此默认属性。
ToolboxDataAttribute 指定元素的格式字符串。如果在工具箱中双击控件或将其从工具箱拖动到设计图面上时,该字符串将成为控件的标记。对于 WelcomeLabel,该字符串创建此元素:
复制代码
<aspSample:WelcomeLabel runat="server"> </aspSample:WelcomeLabel>
WelcomeLabel 控件还从 WebControl 基类继承了两个属性:ParseChildrenAttribute 和 PersistChildrenAttribute。它们被应用为 ParseChildren(true) 和 PersistChildren(false)。这两个属性 (Attribute) 一起与 ToolboxDataAttribute 属性 (Attribute) 共同使用,这样可将子元素解释为属性 (Property),并将属性 (Property) 作为属性 (Attribute) 保留。
以下应用于 WelcomeLabel 的 Text 属性 (Property) 的属性 (Attribute) 是标准设计时属性 (Attribute),通常会将标准设计时属性 (Attribute) 应用于控件的所有公共属性 (Property):
BindableAttribute(被指定为 true 或 false),指定将属性绑定到数据对可视化设计器是否有意义。例如,在 Visual Studio 2005 中,如果属性标记为 Bindable(true),则该属性可显示在“数据绑定”对话框中。如果属性 (Property) 没有使用此属性 (Attribute) 标记,则属性 (Property) 浏览器会推断其值为 Bindable(false)。
CategoryAttribute 指定如何在可视化设计器的属性浏览器中对属性进行分类。例如,当页开发人员使用属性浏览器的分类视图时,Category("Appearance") 将告知属性浏览器在“外观”类别中显示属性。可以根据属性浏览器中的现有类别指定字符串参数,也可以创建自己的类别。
DescriptionAttribute 指定属性的简短描述。在 Visual Studio 2005 中,属性浏览器将在“属性”窗口底部显示选定的属性的描述。
DefaultValueAttribute 指定属性的默认值。此值应与从属性访问器 (getter) 返回的默认值相同。在 Visual Studio 2005 中,DefaultValueAttribute 允许页开发人员通过在“属性”窗口中唤出快捷菜单然后单击“重置”按钮将属性值重置为其默认值。
LocalizableAttribute(指定为 true 或 false)指定本地化属性对可视化设计器是否有意义。当某属性标记为 Localizable(true) 时,可视化设计器会在对本地化资源进行序列化时包含该属性。对控件轮询可本地化的属性时,设计器会将此属性值保存到非特定于区域性的资源文件或其他本地化源中。
注意
由于 ASP.NET 1.0 版和 1.1 版中的 ASP.NET 本地化模型不同,因此在这些版本中不能将 LocalizableAttribute 应用于自定义服务器控件。
应用于控件及其成员的设计时属性在运行时不会影响控件的功能,但在可视化设计器中使用控件时,这些属性能提升开发人员的体验。有关服务器控件的设计时、分析时和运行时属性的完整列表,可参见自定义服务器控件的元数据属性。
使用 App_Code 目录测试控件(无需编译)
可以使用 ASP.NET 动态编译功能对页中的控件进行测试,而无需将控件编译为程序集。ASP.NET 能动态编译 ASP.NET 网站根目录下 App_Code 目录中放置的代码。这样就可以从页访问 App_Code 中源文件中的类,而无需将其手动编译为程序集。如果将控件的源文件放入了 App_Code 目录,则对控件的代码所做的更改能立即在使用这些控件的页中反映出来。
注意
App_Code 目录是 ASP.NET 1.0 和 1.1 中都没有的新功能。使用 App_Code 目录进行初始控件测试是一个可选步骤。生成服务器控件的主要步骤与早期版本相同,下一节“将控件编译为程序集”将对此进行介绍。
创建 ASP.NET 网站和 App_Code 目录
创建一个名为 ServerControlsTest 的网站。可以在 IIS 中将该站点创建为名为 ServerControlsTest 的虚拟目录。有关创建和配置 IIS 虚拟目录的详细信息,请参见如何:在 IIS 中创建和配置虚拟目录。
直接在网站根目录(也称 Web 应用程序根目录)下创建一个 App_Code 目录。
将控件的源文件(WelcomeLabel.cs 或 WelcomeLabel.vb)复制到 App_Code 目录。
创建标记前缀
标记前缀是指在页中以声明方式创建控件时出现在控件类型名称前面的前缀,如 <asp:Table /> 中的“asp”。若要在页中以声明方式使用您的控件,则 ASP.NET 需要一个映射到该控件的命名空间的标记前缀。通过在每个使用自定义控件的页上添加一个 @ Register 指令,页开发人员可提供标记前缀/命名空间映射,如下面的示例所示:
C# 复制代码
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.CS.Controls"%>
[Visual Basic]
复制代码
<%@ Register TagPrefix="aspSample"
Namespace="Samples.AspNet.VB.Controls"%>
注意
ASP.NET 2.0 中的 @ Register 指令与 ASP.NET 1.0 和 ASP.NET 1.1 中的相同。如果您熟悉 ASP.NET 早期版本中的 Register 指令,您会注意到前面的 Register 指令中缺少指定控件程序集名称的 assembly 属性。如果缺少 assembly 属性,则 ASP.NET 会推断该程序集是从 App_Code 目录中的源文件动态编译而来。
除了在每个 .aspx 页中使用 @ Register 指令,页开发人员还可以在 Web.config 文件中指定标记前缀/命名空间映射。如果将在 Web 应用程序的多个页中使用自定义控件,则该方法非常有用。下面的过程描述如何在 Web.config 文件中指定标记前缀映射。
在 Web.config 文件中添加标记前缀映射
如果不存在名为 Web.config 的文本文件,则请在网站的根目录下创建该文件。
创建了新的(空的)Web.config 文件之后,将以下代码复制到该文件中并保存该文件。
C# 复制代码
<?xml version="1.0"?>
<configuration>
<system.web>
<pages>
<controls>
<add tagPrefix="aspSample" namespace="Samples.AspNet.CS.Controls"> </add>
</controls>
</pages>
</system.web>
</configuration>
Visual Basic 复制代码
<?xml version="1.0"?>
<configuration>
<system.web>
<pages>
<controls>
<add tagPrefix="aspSample" namespace="Samples.AspNet.VB.Controls"> </add>
</controls>
</pages>
</system.web>
</configuration>
突出显示部分是一个标记前缀项,该项将标记前缀“aspSample”映射到命名空间 Samples.AspNet.CS.Controls 或 Samples.AspNet.VB.Controls。
如果已存在一个 Web.config 文件,则请将前一步骤中突出显示的文本作为该配置文件的 controls 元素的子项添加到该文件中。如果 Web.config 文件中没有 controls 和 pages 元素,则请按照前一步骤中介绍的方法创建这些元素。
注意
标记前缀项必须是 controls 节的子项,而该节必须位于 pages 节下,而后者又必须是 system.web 的子项。
在配置文件中指定了标记前缀映射之后,可以在网站的任何页中以声明方式使用 WelcomeLabel 控件(如 <aspSample:WelcomeLabel />)。
注意
标记前缀的配置项是 ASP.NET 2.0 的新功能。在 ASP.NET 1.0 和 1.1 中,标记前缀映射在每个使用自定义控件的页的 @ Register 指令中指定。
#1
大
中
小
本主题被查看796次, 共1个帖子, 1页, 当前为第
1
页 选择页数: 1 跳转到第
页
论坛跳转...
Flash专区
动画技术学习
平面设计交流
课件专题讨论
脚本编程技术
作品欣赏评论
设计乐园
设计策划资料
人设造型贴图
酷站资源共享
彩信制作乐园
多格漫画娱乐
交朋识友
音乐游戏发烧
精彩图片中心
情感心情茶舍
闪妹特别区域
闲聊灌水唠嗑
精彩互动
供求信息发布
版务建议交流
flash大赛活动
聚会活动专区
现在的时间是 2008-09-07 03:48:20
沪ICP备05003105号
版权所有
闪客俱乐部
Powered by
Discuz!NT
1.0.6666 Copyright © 2001-2008
Comsenz Inc
.
Processed in 0.256 seconds
切换界面...
Default