Welcome 微信登录

首页 / 网页编程 / ASP.NET / ASP.NET服务器控件开发(5)--添加客户端功能

ASP.NET服务器控件开发(5)--添加客户端功能2011-03-19 博客园 GWPBrian随着Ajax等技术的发展,客户端功能也逐渐变得越来越重要。如果在服务器控件中添加客户端功能,将会创作出功能更强大,界面更丰富的服务器控件。

客户端功能:

在Web编程中,客户端功能传统上是由Web页开发人员负责,并且不被封装在服务器组件中。ASP.NET脱离了这一范畴并使服务器控件能够发出客户端脚本,从而使服务器控件能够将客户端处理与服务器端处理结合起来。例如按钮控件的OnClientClick属性,就可以在其中声明一段脚本在客户端执行。

OnClientClick--->return confirm("Hello Word"),单击按钮时就会在客户端弹出一个提示框。

实现客户端功能的技术主要是客户端脚本(JavaScript、VBScript等)和DHTML。这个想必大家都知道。

ASP.NET服务器控件中客户端功能的实现:

下面我们进入正题,来看看ASP.NET服务器控件中是如何实现客户端功能的:代码如下:

namespace ServerClientControl
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:SimpleButton runat=server></{0}:SimpleButton>")]
public class SimpleButton :Button
{
protected override void RenderContents(HtmlTextWriter output)
{

}

protected override void AddAttributesToRender(HtmlTextWriter writer)
{
base.AddAttributesToRender(writer);
writer.AddAttribute("onclick", "window.confirm("Hello World! ");");
}

}
}

我们创建一个继承自Button的类,通过AddAttributesToRender()方法添加一个onclick客户端事件。这样就简单的实现了向服务器控件添加客户端事件的功能。

ClientScriptManager 类

当然,这只是简单的方式。在 .NET Framework 2.0 版中为我们新增了ClientScriptManager 类。通过在网页的 HTML 标记中包含脚本,可以声明方式向网页添加客户端脚本。然而,有些情况下需要动态添加客户端脚本。

实现复杂客户端功能有关的几个常用方法:

RegisterClientScriptBlock():向页的顶部添加一个脚本块。以字符串形式创建脚本,然后将其传递给方法,方法再将脚本添加到页中。可以使用此方法将任何脚本插入到页中。请注意,脚本可能在所有元素完成之前呈现到页中;因此,您可能无法从脚本中引用页上的所有元素。

RegisterClientScriptInclude():与 RegisterClientScriptBlock 方法类似,但此方法将添加引用外部 .js 文件的脚本块。包含文件在任何其他动态添加的脚本之前添加;因此,您可能无法引用页上的某些元素。

RegisterStartupScript():向页中添加一个脚本块,该脚本块在页完成加载后引发页的 onload 事件之前执行。该脚本通常不创建为事件处理程序或函数;它通常只包含要执行一次的语句。

RegisterOnSubmitStatement():添加响应页的 onsubmit 事件而执行的脚本。该脚本在提交页之前执行,允许您取消提交。

IsStartupScriptRegistered():确定Page对象是否注册了启动脚本。

IsClientScriptBlockRegistered():确定Page对象是否注册了客户端脚本。

更详细的说明讲解大家可以参看MSDN。