在 JavaScript 当前广泛使用的版本中,它缺少 .NET 开发人员所熟悉的几个 OOP 的关键概念,而 ASP.NET AJAX 可以模拟其中的大多数,而且 ASP.NET AJAX 的目标是将使用 .NET 的开发人员所熟悉的某些其他构造(例如属性、事件、枚举和接口)转换成 JavaScript.ASP.NET AJAX 中的反射 API 将检查所有类型(无论是内置类型、类、接口、命名空间、或者甚至是枚举),而它们包括的类似 .NET Framework 的函数(例如 isInstanceOfType 和 inheritsFrom)可以在运行时检查类的层次结构。

下面是一个典型的AjaxControlToolkit的控件脚本,红色部分为添加的解释语句:

// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.

Type.registerNamespace('AjaxControlToolkit');   //定义命名空间

//在 ASP.NET AJAX 中定义类,您需要将其构造函数赋给变量(注意,构造函数如何调用基础函数):

AjaxControlToolkit.ConfirmButtonBehavior = function(element) {
/// <summary>
/// The ConfirmButtonBehavior extends buttons by providing a confirmation dialog when clicked
/// </summary>
/// <param name="element" type="Sys.UI.DomElement" domElement="true">
/// Button the behavior is associated with
/// </param>

//调用初始化基类,类似于C++/C# base关键字
AjaxControlToolkit.ConfirmButtonBehavior.initializeBase(this, [element]);

// Confirm text
this._ConfirmTextValue = null;
// Click handler for the target control
this._clickHandler = null;
}

//通过prototype定义成员()
AjaxControlToolkit.ConfirmButtonBehavior.prototype = {

//初始化资源
initialize : function() {
/// <summary>
/// Initialize the behavior
/// </summary>
AjaxControlToolkit.ConfirmButtonBehavior.callBaseMethod(this, 'initialize');
// Attach the handler
this._clickHandler = Function.createDelegate(this, this._onClick);
$addHandler(this.get_element(), "click", this._clickHandler);
},

//释放资源

dispose : function() {
/// <summary>
/// Dispose the behavior
/// </summary>

// Detach event handlers
if (this._clickHandler) {
$removeHandler(this.get_element(), "click", this._clickHandler);
this._clickHandler = null;
}

AjaxControlToolkit.ConfirmButtonBehavior.callBaseMethod(this, 'dispose');
},

_onClick : function(e) {
/// <summary>
/// Button's click handler to display the confirmation dialog
/// </summary>
/// <param name="e" type="Sys.UI.DomEvent">
/// Event info
/// </param>

if (this.get_element() && !this.get_element().disabled) {
// Display confirm dialog and return result to allow cancellation
if (!window.confirm(this._ConfirmTextValue)) {
e.preventDefault();
return false;
}
}
},

get_ConfirmText : function() {
/// <value type="String">
/// The text to show when you want to confirm the click. (Note: HTML entities can be used here (ex: "
" for new-line))
/// </value>
return this._ConfirmTextValue;
},
set_ConfirmText : function(value) {
if (this._ConfirmTextValue != value) {
this._ConfirmTextValue = value;
this.raisePropertyChanged('ConfirmText');
}
}
}

//最终注册类:
AjaxControlToolkit.ConfirmButtonBehavior.registerClass('AjaxControlToolkit.ConfirmButtonBehavior', AjaxControlToolkit.BehaviorBase);

参考:[ASP.NET AJAX]类似.NET框架的JavaScript扩展

ASP.NET AJAX 控件开发基础相关推荐

  1. 探讨微软ASP.NET AJAX控件开发技术(服务器端)

    一.简介 到目前为止,我们已经讨论了开发Ajax控件所涉及的客户端相关技术.现在,让我们来讨论此过程中与服务器端相关的一些技术. 需要说明的是,在[客户端]篇中我们的举例本质上仅是使用ASP.NET ...

  2. 一起谈.NET技术,asp.net控件开发基础(13)

    1.减轻服务器压力,增加用户体验 服务器功能是强大的,客户端脚本一点也不弱,现在的ajax技术和Atlas技术就是最好的证明,我们总是期待UI有一个好的效果,flash动画给我们带来了很酷的效果,我们 ...

  3. 一起谈.NET技术,asp.net控件开发基础(18)

    本篇继续上篇的讨论,可能大家已经在使用asp.net2.0了,DataSource属性不再使用,而是跟数据源控件搭配使用.现在讨论的绑定技术都是基于1.1版本,先熟悉一下,本质上是一样的,这样一步步的 ...

  4. 一起谈.NET技术,asp.net控件开发基础(20)

    上面我们讨论了数据绑定控件的做法,但都未涉及到asp.net2.0中数据源控件的用法,让用惯了数据源控件的人可能感觉不适应.这次我们就开始讨论在asp.net2.0中,我们该如何重新定义数据绑定控件. ...

  5. asp.net控件开发基础系列

    本系列文章示例源码下载.各位如遇问题,请多查msdn,多利用网络.本人可能没时间一一回复,谢谢你们的支持,希望看到此文的人都能学好控件开发 http://www.cnblogs.com/Clingin ...

  6. 一起谈.NET技术,asp.net控件开发基础(17)

    本篇将开始介绍如自定义数据绑定控件,这里感谢很多人的支持,有你们的支持很高兴.这里首先需要大家熟悉asp.net模板控件的使用,还有自定义模板控件.因为数据绑定控件多是基于模板控件的. 一.回顾 如果 ...

  7. 一起谈.NET技术,asp.net控件开发基础(9)

    写第五篇的时候,我一步步的加上元数据(特性),使得设计时效果更加好,如对复杂属性应用以下特性,使属性浏览器支持扩展/折叠效果,使你更加容易编辑子属性,但接着我又遇到了问题,所以必须去解决 1.认识默认 ...

  8. Asp.net.Ajax控件学习

    Asp.net.Ajax控件学习:  1.  Accordion 功能:     实现了QQ.Msn好友分类的折叠效果,就像包含了多个CollapsiblePanels .  2.  AlwaysVi ...

  9. Asp.net控件开发学习笔记(三)-控件开发基础

    封装      在asp.net中,控件被分为两类.用户控件和自定义服务器控件.前者就是我们经常用来将一些可复用的内容封装成的.ascx文件.这里主要研究后者. 创建自定义服务器控件      创建自 ...

最新文章

  1. 3Dmax+V-Ray学习建筑可视化教程
  2. linux bash shell 常用快捷键
  3. java rpm 安装路径_如何查找rpm方式安装的软件路径
  4. Hibernate优化策略
  5. 一句话实现php日期转中文汉字
  6. java中jnum i .length,java数组和多维数组
  7. 图纸打印什么时候用蓝图_用CAD打印1:1的图纸,为何测量总是比标注尺寸少那么0.2-0.5mm...
  8. 前端清单之Vue.js篇
  9. 期中HTML代码及技术博客
  10. C#中英文字符串固定长度换行
  11. 大数据架构方案总结-ljt(转载)
  12. 3Dmax读取丢失的贴图的方法
  13. wow服务器文件夹,《60级魔兽世界WTFWDB文件夹全解析 by Qcat》
  14. Java项目:在线bbs论坛系统(java+SSM+JSP+bootstrap+jQuery+mysql)
  15. Node.js 网页瘸腿爬虫初体验
  16. php源码后台密码被改了,帝国cms后台密码重置插件后台密码恢复找回密码工具
  17. intel32/ctor.dll mysql_ctor.dll,下载,简介,描述,修复,等相关问题一站搞定_DLL之家
  18. python编程字典数据库_python基础数据类型之字典、集合
  19. 商品销售统计系统java_IMS: 基于Java实现的InventoryManagementSystem进销存管理系统
  20. java线程堆栈nid.tid_java多线程死锁 Java问题定位之Java线程堆栈分析(2)

热门文章

  1. oracle 各种日期函数格式和操作
  2. 一个js的动画,以前以为只有flash可以实现
  3. 代码的坏味道之一——译自《重构》
  4. PHP面向对象之旅:抽象类继承抽象类(转)
  5. 用字符串表达式访问JSON数据(java,fastjson)
  6. Silverlight 2 应用程序部署到任意HTML页面
  7. Windows应用程序开发
  8. code vs1517 求一次函数解析式(数论 纯数学知识)
  9. linux command1
  10. 【Java基础】Java中的持久属性集Properties