专栏首页张善友的专栏ASP.NET AJAX 控件开发基础

ASP.NET AJAX 控件开发基础

在 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: "&#10;" 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扩展

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • WCF服务在高负载下可能会变慢

    KB2538826 解释了WCF服务在突发的请求下会发生的问题:当您的 WCF 服务接收请求的突发时,默认.Net I/O 完成端口 (IOCP) 线程池可能不...

    张善友
  • 如何在程序中加入Growl通知

    Growl for Windows – Mac 样式的信息提示工具。目前已经支持的软件包括:Outlook,Visual Studio 等以及一个利用命令行从本...

    张善友
  • 使用Metrics.NET 构建 ASP.NET MVC 应用程序的性能指标

    通常我们需要监测ASP.NET MVC 或 Web API 的应用程序的性能时,通常采用的是自定义性能计数器,性能计数器会引发无休止的运维问题(损坏的计数器、权...

    张善友
  • Joomla V3.7.0 核心组件SQL注入漏洞分析

    风流
  • 基础篇章:关于 React Native 之 Modal 组件的讲解

    (友情提示:RN学习,从最基础的开始,大家不要嫌弃太基础,会的同学请自行略过,希望不要耽误已经会的同学的宝贵时间) Modal是模态视图,它的作用是可以用来覆盖...

    非著名程序员
  • Android仿QQ复制昵称效果

    这几天做一个复制文本的需求,突然看到QQ上复制昵称跟QQ号的效果,觉得很不错,就想要模仿一波,办法比较简单粗暴,反编译QQ获取了那个.9图片,然后就是用PopW...

    砸漏
  • 【Flutter 专题】61 图解基本 Button 按钮小结 (一)

    Button 在日常中是必不可少的,和尚尝试过不同类型的 Button,也根据需求自定义过,今天和尚系统的学习一下最基本的 Button;

    阿策小和尚
  • KUOKUO的趣味教程 | 小怪物的视野(2)

    本篇承接上一集故事《KUOKUO的趣味教程 | 进击的小怪诞生(1)》,看小怪是如何自我进化的!

    张晓衡
  • ReactNative loading toast hint alert alertSheet

    onety码生
  • (二十九)c#Winform自定义控件-文本框(二)

    GitHub:https://github.com/kwwwvagaa/NetWinformControl

    冰封一夏

扫码关注云+社区

领取腾讯云代金券