新瓶旧酒ASP.NET AJAX(4) - 客户端脚本编程(JavaScript基本类型扩展)

简介:
[索引页]
[源码下载]


新瓶旧酒ASP.NET AJAX(4) - 客户端脚本编程(JavaScript基本类型扩展 - JavaScript Base Type Extensions)


作者: webabcd


介绍
Microsoft AJAX Library中的JavaScript基本类型扩展是基于ECMAScript (JavaScript)对象的。关于JavaScript对象的更多信息可以参看 http://msdn2.microsoft.com/en-us/library/29f83a2c-48c5-49e2-9ae0-7371d2cda2ff


关键
1、恶补JavaScript
    · http://www.w3schools.com/js/default.asp
    · http://msdn2.microsoft.com/en-us/library/hbxc2t98.aspx
    · 《JavaScript 语言参考》中文版
    · JavaScript 参考教程


示例
Array.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Array.aspx.cs" 
        Inherits="ClientScripting_TypeExtensions_Array" Title="Array Type Extensions" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 
        <script type="text/javascript"> 
                 
        function btnArray_ 
        { 
                Sys.Debug.clearTrace(); 
         
                var ary = ['a', 'b', 'c']; 
                var result; 

                // 向数组末尾处添加一个元素 
                Array.add(ary, 'd'); 
                Sys.Debug.trace("数组ary的元素数:" + ary.length + ",最后一个为:" + ary[ary.length - 1]); 

                var b = ['e', 'f']; 
                // 向数组末尾处添加一个数组 
                Array.addRange(ary, b); 
                Sys.Debug.trace("数组ary的元素数:" + ary.length + ",最后一个为:" + ary[ary.length - 1]); 
                 
                // clone一个数组 
                var c = Array.clone(ary); 
                Sys.Debug.trace("数组c的元素数:" + c.length + ",最后一个为:" + c[c.length - 1]); 
                 
                // 清除数组内所有元素 
                Array.clear(c) 
                Sys.Debug.trace("数组c的元素数:" + c.length + ",最后一个为:" + c[c.length - 1]); 
                 
                // 移除数组首元素,返回值为移除的元素 
                result = Array.dequeue(ary); 
                Sys.Debug.trace("数组ary的元素数:" + ary.length + ",移除的元素:" + result); 
                 
                // 向数组末尾处添加一个元素(enqueue是供client-script底层使用的,不能直接写在我们的代码里,实际应用中请使用add) 
                Array.enqueue(ary, "g"); 
                Sys.Debug.trace("数组ary的元素数:" + ary.length + ",最后一个为:" + ary[ary.length - 1]); 
                 
                // 数组内是否包含某个元素,返回true或false 
                result = Array.contains(ary, "c"); 
                Sys.Debug.trace("数组ary的元素数:" + ary.length + ",其中有“c”吗?" + result); 
                 
                // 移除数组中的某个元素 
                Array.remove(ary, 'g'); 
                Sys.Debug.trace("数组ary的元素数:" + ary.length + ",最后一个为:" + ary[ary.length - 1]); 
        
                // 移除数组中的某个元素 
                Array.removeAt(ary, 4); 
                Sys.Debug.trace("数组ary的元素数:" + ary.length + ",最后一个为:" + ary[ary.length - 1]); 
                 
                // 向数组中添加一个元素 
                Array.insert(ary, 4, 'f'); 
                Sys.Debug.trace("数组ary的元素数:" + ary.length + ",最后一个为:" + ary[ary.length - 1]); 

                // 数组中某个元素的位置,返回值为某元素的位置索引 
                result = Array.indexOf(ary, 'd'); 
                Sys.Debug.trace("数组ary的元素数:" + ary.length + ",搜索其中“d”的位置:" + result); 
                result = Array.indexOf(ary, 'd', 3); 
                Sys.Debug.trace("数组ary的元素数:" + ary.length + ",从索引“3”处开始,搜索其中“d”的位置:" + result); 
         
                var s = "['g', 'h']"; 
                // 将字符串解析为数组 
                Array.addRange(ary, Array.parse(s)); 
                Sys.Debug.trace("数组ary的元素数:" + ary.length + ",最后一个为:" + ary[ary.length - 1]); 
                 
                // foreach 
                Array.forEach(ary, appendToString, "|"); 
        } 
         
        function appendToString(arrayElement, index, array) 
        { 
                // “this”在这里代表上下文参数,即“|” 
                Sys.Debug.trace(arrayElement + this + index); 
        } 
         
        </script> 
         
        <p> 
                <input type="button" id="btnArray" value="Array测试" /> 
        </p> 
        <p> 
                <textarea id="TraceConsole" style="width: 500px; height: 500px;"></textarea> 
        </p> 
</asp:Content>
 
 
运行结果
数组ary的元素数:4,最后一个为:d
数组ary的元素数:6,最后一个为:f
数组c的元素数:6,最后一个为:f
数组c的元素数:0,最后一个为:undefined
数组ary的元素数:5,移除的元素:a
数组ary的元素数:6,最后一个为:g
数组ary的元素数:6,其中有“c”吗?true
数组ary的元素数:5,最后一个为:f
数组ary的元素数:4,最后一个为:e
数组ary的元素数:5,最后一个为:f
数组ary的元素数:5,搜索其中“d”的位置:2
数组ary的元素数:5,从索引“3”处开始,搜索其中“d”的位置:-1
数组ary的元素数:7,最后一个为:h
b|0
c|1
d|2
e|3
f|4
g|5
h|6


Boolean.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Boolean.aspx.cs" 
        Inherits="ClientScripting_TypeExtensions_Boolean" Title="Boolean Type Extensions" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 

        <script type="text/javascript"> 

        function btnBoolean_ 
        { 
                // 解析字符串为Boolean类型 
                var bln = Boolean.parse(isShow); 
                 
                if (bln) 
                { 
                        $get('divTestBoolean').style.visibility = 'visible'; 
                } 
                else 
                { 
                        $get('divTestBoolean').style.visibility = 'hidden'; 
                } 
        } 

        </script> 

        <div id="divTestBoolean"> 
                aaabbbccc</div> 
        <p> 
                <input type="button" id="btnBooleanTrue" value="Boolean测试(显示)" /> 
        </p> 
        <p> 
                <input type="button" id="btnBooleanFalse" value="Boolean测试(隐藏)" /> 
        </p> 
</asp:Content>
 
 
运行结果
单击“Boolean测试(隐藏)”按钮则“divTestBoolean”隐藏
单击“Boolean测试(显示)”按钮则“divTestBoolean”显示


Date.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Date.aspx.cs" 
        Inherits="ClientScripting_TypeExtensions_Date" Title="Date Type Extensions" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 

        <script type="text/javascript"> 
         
        var d = new Date(); 
         
        // d.localeFormat(); 
        // 格式化Date 
        document.write(d.format("yyyy年MM月dd日HH时mm分ss秒,星期dddd")); 
         
        document.write("<br />");     
         
        // Date.parseLocale(); 
        // 将字符串解析为Date 
        document.write(Date.parseInvariant("1980-02-14", "yyyy-MM-dd")); 
         
        </script> 

</asp:Content>
 
 
运行结果
2007年06月07日08时34分17秒,星期Thursday
Thu Feb 14 00:00:00 UTC+0800 1980


Error.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Error.aspx.cs" 
        Inherits="ClientScripting_TypeExtensions_Error" Title="Error Type Extensions" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 

        <script type="text/javascript"> 
         
        // 运行一下就知道了 
        // Error还有很多扩展功能,可以参看官方文档 
        var err = Error.argument("参数", "信息"); 
        throw err; 
         
        </script> 

</asp:Content>
 
 
运行结果
弹出确认框,提示内容如下:
出现了运行时间错误。
是否要进行调试?
行249
错误: Sys.ArgumentException: 信息
Parameter name: 参数 


Number.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Number.aspx.cs" 
        Inherits="ClientScripting_TypeExtensions_Number" Title="Number Type Extensions" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 

        <script type="text/javascript"> 
    
        var a = 999; 
         
        // a.localeFormat(); 
        // 格式化数字 
        document.write(a.format("p")); 
        document.write("<br />"); 
        document.write(a.format("d")); 
        document.write("<br />"); 
        document.write(a.format("c")); 
        document.write("<br />"); 
        document.write(a.format("n")); 
        document.write("<br />"); 

        var x = "100"; 
        var y = "200"; 
        // Number.parseLocale(); 
        // 解析字符串为数字 
        document.write(Number.parseInvariant(x) + Number.parseInvariant(y)); 
    
        </script> 

</asp:Content>
 
 
运行结果
999.00 %
999
¤999.00
999.00
300


Object.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Object.aspx.cs" 
        Inherits="ClientScripting_TypeExtensions_Object" Title="Object Type Extensions" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 

        <script type="text/javascript"> 
         
        Type.registerNamespace("Demo"); 
        Demo.Message = function(content, publishTime) { 
                this._content = content; 
                this._publishTime = publishTime; 
        } 
        Demo.Message.registerClass('Demo.Message'); 

        var d = new Date(); 
        var testMessage = new Demo.Message('hello', d); 
         
        // 顾名思义:getTypeName 
        document.write(Object.getTypeName(testMessage)); 
         
        document.write("<br />"); 
         
        // 顾名思义:getType 
        document.write(Object.getType(testMessage)); 
         
        </script> 

</asp:Content>
 
 
运行结果
Demo.Message
function(content, publishTime) { this._content = content; this._publishTime = publishTime; } 


String.aspx
<%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="String.aspx.cs" 
        Inherits="ClientScripting_TypeExtensions_String" Title="String Type Extensions" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server"> 

        <script type="text/javascript"> 
         
        var a = " abc "; 

        // 同 C# 
        document.write(a.startsWith("a")); 
        document.write(" "); 
        document.write(a.endsWith("c")); 
        document.write("<br />"); 
         
        a = a.trimStart(); 
        document.write(a.startsWith("a")); 
        document.write("<br />"); 

        a = a.trimEnd(); 
        document.write(a.endsWith("c")); 
        document.write("<br />"); 
         
        a = " " + a + " "; 
        a = a.trim(); 
        document.write(a.startsWith("a")); 
        document.write(" "); 
        document.write(a.endsWith("c")); 
        document.write("<br />"); 
         
        var user =    
        { 
                Name: "webabcd", 
                Birthday: new Date(1980, 2, 14) 
        }; 
         
        // String.localeFormat(); 
        document.write(String.format("Name:{0},Birthday:{1:yyyy-MM-dd}", user.Name, user.Birthday)); 
        document.write("<br />"); 
         
         
        // 自定义格式化的实现 
        Type.registerNamespace('Demo'); 
         
        Demo.CustomFormattedString = function()    
        { 
         
        } 
        Demo.CustomFormattedString.prototype =    
        { 
                // 实现toFormattedString方法,从而实现自定义格式化 
                toFormattedString: function(format)    
                { 
                        return "自定义格式化:" + format; 
                } 
        } 
        Demo.CustomFormattedString.registerClass('Demo.CustomFormattedString'); 

        document.write(String.format("{0:测试信息}", new Demo.CustomFormattedString()));        
                             
        </script> 

</asp:Content>
 
 
运行结果
false false
true
true
true true
Name:webabcd,Birthday:1980-03-14
自定义格式化:测试信息


OK
[源码下载]





     本文转自webabcd 51CTO博客,原文链接: http://blog.51cto.com/webabcd/344798 ,如需转载请自行联系原作者
相关文章
|
5月前
|
JavaScript 前端开发 Java
JavaScript:编程宇宙的多面闪耀之星-揭秘 JavaScript,编程界的全能霸主如何炼成?-优雅草卓伊凡
JavaScript:编程宇宙的多面闪耀之星-揭秘 JavaScript,编程界的全能霸主如何炼成?-优雅草卓伊凡
128 24
JavaScript:编程宇宙的多面闪耀之星-揭秘 JavaScript,编程界的全能霸主如何炼成?-优雅草卓伊凡
|
6月前
|
JavaScript Ubuntu Linux
如何在阿里云的linux上搭建Node.js编程环境?
本指南介绍如何在阿里云Linux服务器(Ubuntu/CentOS)上搭建Node.js环境,包含两种安装方式:包管理器快速安装和NVM多版本管理。同时覆盖全局npm工具配置、应用部署示例(如Express服务)、PM2持久化运行、阿里云安全组设置及外部访问验证等步骤,助你完成开发与生产环境的搭建。
|
JavaScript 前端开发 编译器
解锁JavaScript模块化编程新纪元:从CommonJS的基石到ES Modules的飞跃,探索代码组织的艺术与科学
【8月更文挑战第27天】随着Web应用复杂度的提升,JavaScript模块化编程变得至关重要,它能有效降低代码耦合度并提高项目可维护性及扩展性。从CommonJS到ES Modules,模块化标准经历了显著的发展。CommonJS最初专为服务器端设计,通过`require()`同步加载模块。而ES Modules作为官方标准,支持异步加载,更适合浏览器环境,并且能够进行静态分析以优化性能。这两种标准各有特色,但ES Modules凭借其更广泛的跨平台兼容性和现代语法逐渐成为主流。这一演进不仅标志着JavaScript模块化的成熟,也反映了整个JavaScript生态系统的不断完善。
117 3
|
开发框架 JavaScript 前端开发
揭秘:如何让你的asp.net页面变身交互魔术师——先施展JavaScript咒语,再引发服务器端魔法!
【8月更文挑战第16天】在ASP.NET开发中,处理客户端与服务器交互时,常需先执行客户端验证再提交数据。传统上使用ASP.NET Button控件直接触发服务器事件,但难以插入客户端逻辑。本文对比此法与改进方案:利用HTML按钮及JavaScript手动控制表单提交。后者通过`onclick`事件调用JavaScript函数`SubmitForm()`来检查输入并决定是否提交,增强了灵活性和用户体验,同时确保了服务器端逻辑的执行。
137 5
|
12月前
|
存储 JavaScript 前端开发
JavaScript编程实现tab选项卡切换的效果+1
JavaScript编程实现tab选项卡切换的效果+1
|
7月前
|
JavaScript 前端开发 IDE
【编程向导】Js与Ts差异详解:选择与权衡
JavaScript 一直是 Web 开发的基石,以其灵活性和动态性著称,但其松散类型可能导致大型项目中出现难以调试的错误。TypeScript 作为 JavaScript 的超集,通过引入静态类型系统,提供了更高的类型安全性和更好的工具支持,尤其适合大型团队和复杂项目。本文详细对比了 JavaScript 和 TypeScript 的优缺点,并提供了实际代码示例,帮助开发者根据项目需求选择合适的工具。
710 2
|
10月前
|
开发框架 .NET C#
在 ASP.NET Core 中创建 gRPC 客户端和服务器
本文介绍了如何使用 gRPC 框架搭建一个简单的“Hello World”示例。首先创建了一个名为 GrpcDemo 的解决方案,其中包含一个 gRPC 服务端项目 GrpcServer 和一个客户端项目 GrpcClient。服务端通过定义 `greeter.proto` 文件中的服务和消息类型,实现了一个简单的问候服务 `GreeterService`。客户端则通过 gRPC 客户端库连接到服务端并调用其 `SayHello` 方法,展示了 gRPC 在 C# 中的基本使用方法。
193 5
在 ASP.NET Core 中创建 gRPC 客户端和服务器
|
10月前
|
前端开发 JavaScript 持续交付
提高JavaScript编程效率
提高JavaScript编程效率
114 3
|
10月前
|
自然语言处理 JavaScript 前端开发
JavaScript闭包:解锁编程潜能,释放你的创造力
【10月更文挑战第25天】本文深入探讨了JavaScript中的闭包,包括其基本概念、创建方法和实践应用。闭包允许函数访问其定义时的作用域链,常用于数据封装、函数柯里化和模块化编程。文章还提供了闭包的最佳实践,帮助读者更好地理解和使用这一强大特性。
82 2
|
JavaScript 前端开发 安全
揭秘TypeScript的魔力:它是如何华丽变身为JavaScript的超能英雄,让您的代码飞入全新的编程维度!
【8月更文挑战第22天】在Web开发领域,JavaScript是最主流的编程语言之一。但随着应用规模的增长,其类型安全和模块化的不足逐渐显现。为解决这些问题,微软推出了TypeScript,这是JavaScript的一个超集,通过添加静态类型检查来提升开发效率。TypeScript兼容所有JavaScript代码,并引入类型注解功能。
94 2