`
lovnet
  • 浏览: 6692750 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

ASP.NET服务器控件开发(5)--添加客户端功能

阅读更多

随着Ajax等技术的发展,客户端功能也逐渐变得越来越重要。如果在服务器控件中添加客户端功能,将会创作出功能更强大,界面更丰富的服务器控件。

客户端功能:

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

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

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

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

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

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->namespaceServerClientControl
{
[DefaultProperty(
"Text")]
[ToolboxData(
"<{0}:SimpleButtonrunat=server></{0}:SimpleButton>")]
publicclassSimpleButton:Button
{
protectedoverridevoidRenderContents(HtmlTextWriteroutput)
{

}


protectedoverridevoidAddAttributesToRender(HtmlTextWriterwriter)
{
base.AddAttributesToRender(writer);
writer.AddAttribute(
"onclick","window.confirm('HelloWorld!');");
}


}

}

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

ClientScriptManager 类

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

实现复杂客户端功能有关的几个常用方法:
RegisterClientScriptBlock():向页的顶部添加一个脚本块。以字符串形式创建脚本,然后将其传递给方法,方法再将脚本添加到页中。可以使用此方法将任何脚本插入到页中。请注意,脚本可能在所有元素完成之前呈现到页中;因此,您可能无法从脚本中引用页上的所有元素。
RegisterClientScriptInclude():与 RegisterClientScriptBlock 方法类似,但此方法将添加引用外部 .js 文件的脚本块。包含文件在任何其他动态添加的脚本之前添加;因此,您可能无法引用页上的某些元素。
RegisterStartupScript():向页中添加一个脚本块,该脚本块在页完成加载后引发页的 onload 事件之前执行。该脚本通常不创建为事件处理程序或函数;它通常只包含要执行一次的语句。
RegisterOnSubmitStatement():添加响应页的 onsubmit 事件而执行的脚本。该脚本在提交页之前执行,允许您取消提交。
IsStartupScriptRegistered():确定Page对象是否注册了启动脚本。
IsClientScriptBlockRegistered():确定Page对象是否注册了客户端脚本。

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

这里还要提下OnPreRender 方法。这个方法触发PreRender 事件。PreRender 事件在加载 Control 对象之后、呈现之前发生。可以理解为准备呈现的意思。在该事件的生存期内可以保存服务器控件视图状态的任何更改。不保存呈现阶段内所做的同样更改。开发人员可以再这个事件中添加脚本处理。

<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->stringJsPath="js/";
//重写OnPreRender方法
protectedoverridevoidOnPreRender(EventArgse)
{
Page.ClientScript.RegisterClientScriptBlock(
this.GetType(),"Ajax","<scriptlanguage='javascript'src='"+JsPath+"Ajax.js"+"'></script>");//注册客户端脚本
Page.ClientScript.RegisterStartupScript(this.GetType(),"jQuery","<scriptlanguage='javascript'src='"+JsPath+"jQuery.js"+"'></script>");//注册启动脚本
base.OnPreRender(e);
}

这里简单的举个例子,Ajax.js中声明了要调用函数的名称,jQuery中对函数具体的实现。具体功能的代码就根据自己的需求实现啦!本人的js一般,这里就不做例子了。

IScriptControl 接口

IScriptControl接口:定义 ASP.NET 服务器控件为在启用 AJAX 的应用程序中定义JavaScript资源而必须实现的方法。创建将 ASP.NET 的 AJAX 功能用于浏览器中的扩展功能的自定义 Web 服务器控件。

当由类实现时,IScriptControl 接口的方法提供对脚本库的引用,这些脚本库定义客户端组件和表示客户端类型实例的脚本说明符。在将包含脚本控件功能的自定义服务器控件中实现此接口。这样,通过IScriptControl接口也能够实现ASP.NET服务器空间中添加客户端功能。

MSDN上有个通过IScriptControl向Web 服务器控件添加客户端功能的很好的例子。讲解的很详细。感兴趣的朋友可以参看:

<!---->http://msdn.microsoft.com/zh-cn/asp.net/bb386450.aspx#Mtps_DropDownFilterText

小结:感冒了,就先写到这吧。通过向服务器控件中添加客户端功能,可以很好的增强控件的价值,提高用户客户端的体验。从中我们也不难看出,要想开发出一个好的服务器控件也是满不容易的,不但要对控件的生命周期,.NET提供的类库,接口有所了解,还要对js也要比较熟悉。所以从自定义服务器控件的开发过程中学习到很多知识。

<!-- Content type: Devdiv1. Transform: orcas2mtps.xslt. -->

分享到:
评论

相关推荐

    ASP.NET服务器控件和客户端脚本

    如何在ASP.NET页面中使用一种特定类型的对象,即服务器控件,以及如何充分利用这个控件。

    庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术

    17.3 asp.net ajax对服务器控件支持的基类 612 17.3.1 ajax控件支持的基类 612 17.3.2 ajax控件应用示例 623 17.4 本章总结 636 附录a .net 3.5技术教程系列——collection/asp.net ajax/ silverlight/jquery .....

    如何封装JS和CSS文件为服务器端控件---ASP.NET 2.0

    如何封装JS和CSS文件为服务器端控件---ASP.NET 2.0 我们以封装一个JS的日期控件为列子,将它和服务器的TextBox结合在一起做成一个服务器控件,以达到直接托上去就可以使用的效果。其实很简单,大家共同学习。先看看...

    asp.net验证码控件

    2、自动完成客户端以及服务器的验证码验证,Ajax验证,随用户输入即时 验证并友好提示。 3、可自定义验证码图片外观。 4、有水平方向垂直方向两种方式选择。 5、有数字、小写字母、大写字母三种及任意两种组合、三...

    获取asp.net服务器控件的客户端ID和Name的实现方法

    前几天在做项目的时候,遇到一个问题,想查看Asp.net中服务器控件...以上这篇获取asp.net服务器控件的客户端ID和Name的实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。

    ASP.net的相关课件

    asp.net服务器控件是微软为了方便开发者开发而推出的一系列控件,它们都以类似&lt;asp:* ID="btnOK" runat="server" …/&gt;的方式出现在Visual Studio 2005的源视图里,*代表了控件名,如&lt;asp:Button ID="btnOK" runat=...

    ASP.NET 开发和使用Web用户控件

    在 ASP.NET 的开发中 Web 用户控件的开发和使用是一项必不可少的技术 1.简介 2.创建 Web 用户控件 3.在 Web 窗体中使用 Web 用户控件 4.添加属性 5.添加方法 6.添加自定义事件 7.控件内客户端角本访问服务器控件的...

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part1

    17.3 asp.net ajax对服务器控件支持的基类 612 17.3.1 ajax控件支持的基类 612 17.3.2 ajax控件应用示例 623 17.4 本章总结 636 附录a .net 3.5技术教程系列——collection/asp.net ajax/ silverlight/jquery .....

    庖丁解牛 纵向切入ASP.NET 3.5控件和组件开发 part2

    17.3 asp.net ajax对服务器控件支持的基类 612 17.3.1 ajax控件支持的基类 612 17.3.2 ajax控件应用示例 623 17.4 本章总结 636 附录a .net 3.5技术教程系列——collection/asp.net ajax/ silverlight/jquery .....

    javascript操作ASP.NET服务器控件

    在ASP.NET中使用js时,js获取DOM元素时,经常获取不到,这是因为获取的方法有误,现在介绍一方法,解决如何使用js获取ASP.NET控件在浏览器端生成html标签对应的id 1.获取服务器端控件在浏览器端生成的标签的id,即...

    庖丁解牛纵向切入ASP.NET 3.5控件和组件开发技术.pdf

    内容简介  本书主要介绍asp.net的控件开发,书中通过70多个例子讲解了asp.net控件开发...17.3 asp.net ajax对服务器控件支持的基类612 17.3.1 ajax控件支持的基类612 17.3.2 ajax控件应用示例623 17.4 本章总结636

    UltraWebChart--服务器端-基于ASP.NET的图表控件

    提供了ASP.NET 基于会话的安全性,从而保证了显示的图表数据,使所有敏感图表非常安全。 强大的美学增强 图表不仅仅采用点阵表示,最重要的是数据的外观显示。为了轻松的显示您的图表,UltraWebChart提供了内置的...

    ASP.NET应用与开发案例教程

    上篇ASP.NET应用与开发基础 第1章ASP.NET概论 1.1ASP.NET简介 1.1.1从.NET谈起 1.1.2动态网站设计技术 1.1.3ASP.NET的介绍 1.1.4ASP.NET和ASP的对比 1.2运行环境配置 1.2.1ASP.NET运行环境介绍 1.2.21lS的安装和配置...

    从ASP.NET服务器控件插入客户端脚本

    难度:2摘要:尽管从技术角度讲,ASP.NET服务器控件的所有功能都可以在服务器端执行,但通常情况下通过添加客户端脚本可以大大增强服务器控件的可用性。本文将探讨服务器控件发送客户端脚本的两种方法,还将构建两个...

    ASP.NET网络数据库开发实例精解.part1

    ch12\Example_12_1~ Example_12_27 ---- 第12章中的ASP.NET网络技术开发,如获取服务器和客户端信息、使用ASP.NET中的Passport验证、在ASP.NET中使用Windows登录、使用ASP.NET中的用户控件、使用ASP.NET中的自定义...

    ActiveReports for .NET--灵活强大的.Net 报表制作控件

    用C#或Visual Basic .NET 语言编写报表代码,其中包含了ASP.NET 服务器控件,帮助您安装web客户端浏览器以及WinForms浏览器控件,以提供单页浏览,多页浏览,文本搜索,内容列表和定制工具栏等功能。 组件列表 ...

    ASP.Net皮肤换肤控件

    分页是Web应用程序中最常用到的功能之一,在ASP.NET中,虽然自带了一个可以分页的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分页功能并不尽如人意,如可定制性差、无法通过Url实现分页功能等,...

    ASP.NET常见问题集锦.zip

    从 ASP.NET 服务器控件插入客户端脚本.doc 从 ASPX 页面进行 Web 服务调用时的性能考虑.do 使用 .NET 框架轻松开发完美的 Web 窗体控件.do 使用 TreeView IE Web 控件.doc 关于ASP.Net中的时间处理.txt 关于...

Global site tag (gtag.js) - Google Analytics