java 用户控件_用户控件与服务器控件(三)

创作简单的ASP.NET服务器控件

1.定义一个直接或间接从System.Web.UI.Control派生的类。

2.[C#]

3.using System;

4.using System.Web.UI;

5.public class FirstControl : Control{...}

using指令允许代码从名称空间引用类型,而无须使用完全限定名。因此,Control解析为System.Web.UI.Control。

6.将控件包含在名称空间中。可以定义新的名称空间或者使用现有的名称空间。名称空间的名称是Register页指令中名称空间伪特性的值。(例如,)。有关在ASP.NET页上使用自定义控件的示例,请参见本主题末尾的示例。

7.[C#]

8.namespace CustomControls

9.{

10.public class FirstControl : Control {...}

11....

12.}

13.定义控件所需的属性。以下代码片段定义了一个名为Message的属性。属性类似于智能字段,它们拥有访问器方法。

14.[C#]

15.private String message = "Hello";

16.//The Message property.

17.public virtual String Message{

18.get{

19.return message;

20.}

21.set{

22.message = value;

23.}

24.}

有关属性的更多信息,请参见。若要定义在往返过程中维护其状态的属性,请参见。

25.重写控件从Control继承的Render方法。此方法提供将HTML发送到客户端浏览器的逻辑。控件发送到客户端的HTML是作为字符串参数传递给System.Web.UI.HtmlTextWriter实例的Write方法的,如下面的示例所示。

26.[C#]

27.protected override void Render( HtmlTextWriter writer)

28.{

29.writer.Write(" "+ this.Message + "
" +

30."The date and time on the server: " +

31.System.DateTime.Now.ToLongTimeString()

32.+ "");

33.}

在该代码片段中访问的System.DateTime类是一个实用工具类,它可提供日期和时间信息。请注意,该类是在服务器上调用的,因此返回服务器上的时间。

在此代码片段中,原始HTML仅作为字符串参数传递给HtmlTextWriter的Write方法。有关使用HtmlTextWriter方法简化HTML呈现以及呈现从WebControl派生的控件的详细信息,请参见。

为简单起见,在本例中,FirstControl是从Control派生的。如果您要创作自行呈现的组件,请从System.Web.UI.WebControls.WebControl中派生,以便控件可以继承UI特定的属性。

34.根据需要添加运行时和设计时特性,以便为控件提供自定义元数据。运行时特性是某些控件必需的。需要运行时特性的控件示例有:公开模板的控件、执行数据绑定的控件或者需要自定义分析逻辑的控件。有关运行时特性的示例,请参见。如果要在可视化设计器(如Visual Studio .NET)中使用控件,则需要设计时属性。设计时属性不是公共语言运行库所必需的,但这些属性提供在设计时显示一个控件所必需的元数据。下面的代码片段将设计时特性应用到第2步中定义的Message属性上。

35.[C#]

36.[Description("A message string to display to the user")]

37.public virtual String Message{...}

有关设计时特性的更多信息,请参见和。

38.通过执行以下步骤来保存、编译和部署控件。

a.在应用程序的根目录中创建名为/bin的子目录。

b.将源文件编译为程序集(.dll),并将该程序集保存到应用程序的/bin子目录中。

例如,如果源代码是用C#编写的,并且保存为名为FirstControl.cs的文件,则可以从包含源文件的目录执行以下命令。

csc /t[arget]:library /out:[path to bin]bin\CustomControls.dll /r[eference]:System.Web.dll /r:System.dll FirstControl.cs

/r选项通知编译器控件引用了哪些程序集。

控件现已编译完成,可以随时在应用程序的根目录(或者其任何子目录)下的任何ASP.NET页中使用该控件。

下面是FirstControl的完整代码。该控件包含在命名空间CustomControls中。

[C#]

using System;

using System.Web.UI;

using System.Web.UI.WebControls;

namespace CustomControls

{

public class FirstControl : Control

{

private String message = "Hello";

public virtual String Message

{

get

{

return message;

}

set

{

message = value;

}

}

protected override void Render( HtmlTextWriter writer)

{

writer.Write(" "

+ this.Message + "
" + "The time on the server is " + System.DateTime.Now.ToLongTimeString()

+ "");

}

}

}

在ASP.NET页上使用FirstControl

以下ASP.NET页使用上一例中创建的自定义控件。Register页指令允许页开发人员给名称空间创建别名,并为ASP.NET提供包含该控件的程序集的名称。本例为CustomControls名称空间创建别名Custom。

Here is a custom ASP.NET server control.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值