在本文中,我们将给您介绍关于[ASP.NETAjax]ECMAScript基础类以及Asp.netAjax对类<Object>的扩展的详细内容,并且为您解答ajax类型的相关问题,此外,我
在本文中,我们将给您介绍关于[ASP.NET Ajax] ECMAScript基础类以及Asp.net Ajax对类<Object>的扩展的详细内容,并且为您解答ajax 类型的相关问题,此外,我们还将为您提供关于AJAX——ASP.NET AJAX(三)ScriptManagerProxy,Timer和UpdateProgress、AJAX——ASP.NET AJAX框架(一)ScriptManager、ASP.NET AJAX(9)-ScriptManagerProxy、ASP.NET Webforms ASP.NET Ajax与ASP.NET MVC和Ajax框架自由的知识。
本文目录一览:- [ASP.NET Ajax] ECMAScript基础类以及Asp.net Ajax对类<Object>的扩展(ajax 类型)
- AJAX——ASP.NET AJAX(三)ScriptManagerProxy,Timer和UpdateProgress
- AJAX——ASP.NET AJAX框架(一)ScriptManager
- ASP.NET AJAX(9)-ScriptManagerProxy
- ASP.NET Webforms ASP.NET Ajax与ASP.NET MVC和Ajax框架自由
[ASP.NET Ajax] ECMAScript基础类以及Asp.net Ajax对类<Object>的扩展(ajax 类型)
“Everything is Object”,在面向对象的编程语言中谁都知道这句话,但对我来说这是一种感觉,只可意会很难言传。由于我对JavaScript和薄弱,所以在看Asp.net Ajax类库的同时也翻出了ECMAScript顺便学习学习。在.NET中所有类都是继承自Object,同样在JS中也一样说有都继承Object,因此如果对Object进行了扩展,那所有继承Object类的后代肯定会拥有祖先的血缘。
既然开始学习JavaScript那就顺便在这里提一提他的原始数据类型,在JS中有5个原始数据类型(Undefined、Null、Boolean、Number、String),可以通过typeof来判断变量和值的数据类型
1. Undefined: 当变量被声明但没有被初始化,或函数没有明确返回一个值的时候,该变量或函数即为 Undefined 类型,是Null类型的一种特性。
2. Null: 当一个对象的值不存在时,该对象返回null。
3. Boolean:一看就知道,一男一女true/false,值得注意的是0不等于false,但是可以转化为false。
4. Number:可以定义32位整型数据或64位浮点型数据。从网上的一些资料知道,浮点数在未被计算之前是以String类型存储(不知道是真是假)。当浮点类型数据很大或很小时(可以前后移动六位),将使用E表示法来表示浮点数据,最大可以存储17位数据。另外,isFinite()方法可以判断一个数值是否有限,isNaN()方法可以判断一个数据是非数字类型。通过parseInt()和parseFloat()可以将其他类型转化为数字类型,如果转化不成功则返回NaN(Not a Number)。
5. String:这是一个唯一没有大小限制的原始类型,其他类型可以通过toString()转化为String类型,值得一提的是数字转化为String类型可以加入2.8.16作为参数已输出二进制,八进制和十六进制的字符串。
下面我们来看一下Object类型,通过var obj=new Object();可以申明一个对象。同.NET中的Object一样,它是所有类的基类。
它具有两个属性:constructor(相当于.NET中的构造函数)建议一个对象函数引用,对于Object类而言,该引用指向本地Object()方法。Prototype对象里prototype对象的一个引用值,通过这个属性可以反射每个对象中的prototype扩展的属性和方法,在Asp.net Ajax中也是利用这个属性类扩展和反射类的。
hasOwnProperty(property)—判断property属性是否存在于对象中,property数据类型为string;isPrototypeOf(object)— 判断一个对象是否是另一对象的 prototype;propertyIsEnumerable(property)— 判断所给出的属性能否使用 for 语句列举出来;toString()—返回对象的原始类型string;valueOf()—返回对象合适的原始值,对于多数类而言,返回的值和toString()相同。这些就是原始Object对象的方法,在其他类中这些方法以同样被继承。
在Asp.NET Ajax中微软为了将整个类库扩展的更适合.NET的开发人员,在原始的Object对象中扩展了两个方法:
Object.__typeName="Object";
Object.getType=function(b){
var a=b.constructor;
if(!a||typeof a!=="function"||!a.__typeName||a.__typeName==="Object")return Object;
return a
};
Object.getTypeName=function(a){
return Object.getType(a).getName()
};
从上面我们可以看到,Object.getType(type)这个静态方法可以获取一个类的对象,而Object.getTypeName(type)通过调用[prototype]Type.getName()而获取类的名(包括命名空间)。这没有什么好说的,下面来看一下测试:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<script language="javascript">
Type.registerNamespace("NExplus");
//define a class;
NExplus.ObjectTest=function(name){
this._name=name;
}
NExplus.ObjectTest.prototype.getName=function(){
return (this._name === undefined) ? null : this._name;
}
NExplus.ObjectTest.prototype.setName=function(name){
this._name=name;
}
//register class;
NExplus.ObjectTest.registerClass("NExplus.ObjectTest");
NExplus.TestObject=function(){
var a=new NExplus.ObjectTest("Test is success?");
document.write(a.getName());
document.write("<br/>");
a.setName("Success!");
document.write(a.getName());
document.write("<br/>");
document.write(Object.getTypeName(a)+"<br/>")
}
//run;
NExplus.TestObject();
</script>
</div>
运行结果:
Test is success?
Success!
NExplus.ObjectTest
这个比较简单,微软只是为了和.NET框架更接近而扩展的Object类,我觉得这两个在开发过程中应该很少用到吧,上面的测试顺便测试一下属性J。我很想知道有没有那个好心人翻译了ECMAScript的规范文档,看英文真的好类;<.顺便附上一只捆牢我的两个操作符: ||:从第一个开始,遇到有意义的返回,否则返回最后一个表达式(不一定是Boolean值); &&:从第一个开始,遇到无意义(0,null,undefined,"",false,NaN)的返回,否则返回最后一个表达式(不一定是Boolean值)。
- 从零开始学ASP.NET-基础篇
- ASP.net基础知识之常见错误分析
- ASP.NET 2.0 程序安全的基础知识
- ASP.NET中实现文件的保护性下载基础篇
- ASP.NET MVC基础
- ASP.NET MVC小结之基础篇(一)
- ASP.NET MVC小结之基础篇(二)
- ASP.NET母版页基础知识介绍
- ASP.NET 5已终结,迎来ASP.NET Core 1.0和.NET Core 1.0
AJAX——ASP.NET AJAX(三)ScriptManagerProxy,Timer和UpdateProgress
上两篇博客简单学习了ScriptManager和UpdatePanel两个异步刷新的核心控件,这篇博客继续学习ASP.NET AJAX框架中的其它三个控件。
一,首先看ScriptManagerProxy控件,它和ScriptManager非常相似,那为什么它出现呢?在ASP.NETAJAX中,由于一个ASPX页面上只能有一个ScriptManager控件,所以在有母版页的情况下,如果需要在Master-Page和Content-Page中需要引入不同的脚本时,这就需要在Content-page中使用ScriptManagerProxy。这就是它俩的主要区别。
<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
</asp:ScriptManagerProxy>
二,Timer控件,这个大家应该不陌生,在VB,C#中当中,我们经常用它,在这里他也同样一样,只不过是异步刷新而已。很简单的例子,只要把他放在UpdatePanel控件里,就能实现局部刷新的秒表功能:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<%= DateTime.Now %>
<asp:Timer ID="Timer1" runat="server" Interval="1000">
</asp:Timer>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
三,UpdateProgress控件:
1,提出原因:在现实的网络中,当我们打开某一个网站或链接时,由于种种原因经常要等待页面显示出来,这样的用户体验真的很差。如果能在页面执行较长时间操作的同时,给用户提供一个类似于浏览器状态栏那样的进度条,将会很大地改善用户体验。所以微软在ASP.NETAjax中为我们提供了UpdateProgress控件,它可以轻松的实现这样的功能。
2,简介:UpdateProgress控件用于当页面异步更新数据时,显示给用户友好的提示信息。该信息可以是文本信息,也可以是图片信息,用户可以根据自己的项目需要或自己的意愿进行选择。该控件的简单定义形式如下所示:
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DynamicLayout="false" AssociatedUpdatePanelID="UpdatePanel1">
<Progresstemplate>
表示进度的信息
</Progresstemplate>
</asp:UpdateProgress>
3,看一下它的几个常用属性:
属性 |
说明 |
AssociatedUpdatePannelID |
该属性和该UpdateProgress相关联的UpdatePanel的ID,通常用于有多个UpdatePanel的情况下 |
displayAfter |
进度信息被展示后的ms数 |
DynamicLayout |
UpdateProgress控件是否动态绘制,而不占用网页空间 |
具体的使用,需要根据实际情况,把我们的一些表示进度的图片也好,文字也好,写到我们的UpdateProgress的Progresstemplate中即可,可以指定UpdatePanel来进行测试!!!
这三个控件相对来说简单一些,但是也都非常有用。很好的配合UpdatePanel,ScriptManager来进行局部异步刷新,可以大大提高用户的体验度!综上为ASP.NETAJAX框架中的五个控件的简单学习,还需要在实际项目中来锻炼提高,加深理解!!!
AJAX——ASP.NET AJAX框架(一)ScriptManager
前边我们针对以XMLHttpRequest为核心学习了AJAX的相关知识,接下来,重点学习一下微软在ASP.NET中的AJAX的框架的基础学习,主要是AJAXExtension中的几个控件,如下图:
而,这篇博客,我们来重点看一下ScriptManager的学习。而我主要是通过他的属性来进行学习的。
一,概述:ScriptManager控件包括在ASP.NET2.0以上版本的AJAXExtensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问WebService。所有需要支持ASP.NET AJAX的ASP.NET页面上有且只能有一个ScriptManager控件。
如下():
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
简单理解就是每一个需要异步更新的页面,最开始都需要添加这个控件,保证异步更新的顺利完成。
二,下边看一下它的几个常用属性:
属性或方法 |
说明 |
AllowCustomErrorsRedirect |
该属性为布尔类型,默认值为true,表示在异步更新发生异常时是否使用Web.config中<customErrors>节中的设定。Web.config的<customErrors>节中可以指定应用程序级别的错误处理页面,这将通过重定向至某个专门显示异常的页面来实现 |
AsyncPostBackerrorMessage |
该属性表示了异步回送过程中发生的异常将显示出的消息,我们可在ScriptManager的声明中设置这个属性 |
AsyncPostBackTimeout |
异步回传时超时限制,默认值为90,单位为秒 |
AsyncPostBackerror |
异步回传发生异常时的服务端处理函数,在这里可以捕获信息并作相应的处理。 |
EnablePartialRendering |
该属性可以使页面的某些控件或某个区域实现Ajax类型的异步回送和局部更新功能。若需要启用页面的局部更新模式,则应该将EnablePartialRendering属性设置为true,保持默认值即可 |
ScriptPath |
设置所有的脚本块的根目录,作为全局属性,包括自定义的脚本块或者引用第三方的脚本块。如果在Scripts中的<asp:ScriptReference/>标签中设置了Path属性,它将覆盖该属性 |
ResolveScriptReference |
指定ResolveScriptReference事件的服务器端处理函数,在该函数中可以修改某一条脚本的相关信息如路径、版本等。 |
ScriptMode |
指定ScriptManager发送到客户端的脚本的模式,有四种模式:Auto,Inherit,Debug,Release,默认值为Auto。具体如下表所示 |
ScriptMode的属性值
属性值 |
说明 |
Auto |
该属性值用于根据web.config配置中的retail配置节的值来决定脚本的模式。如果retail配置节的值为true,则把发布模式的脚本发送到客户端,反之则发送调试脚本 |
Debug |
该属性值用于当retail配置节的值不为true时,则发送debug版本的客户端脚本 |
Release |
该属性值用于当retail配置节的值不为false时,则发送Release版本的客户端脚本 |
Inherit |
该属性值意义同Auto相同 |
认真阅读上边的属性和方法,通过实践来了解,就非常容易了,这里我来写其中几个例子。
1,AllowCustomErrorsRedirect属性,当它设为true时就是利用我们web.config的<customErrors>指向的错误页面,如果程序出现了错误,则直接跳转到指定的错误页面。我们来前代码:
前台代码:
<form id="form1" runat="server">
<%--错误页配置--%>
<%--指定AllowCustomErrorsRedirect的属性为true --%>
<asp:ScriptManager ID="ScriptManager1" runat="server" AllowCustomErrorsRedirect="true">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
</form>
后台C#代码:
protected void Button1_Click(object sender,EventArgs e)
{
throw new Exception("出现错误了");
}
Web.config配置:
<!--错误页配置,本项目中提前设置好的错误页-->
<customErrors mode="On" defaultRedirect="~/Error.aspx"></customErrors>
这样设置后当程序出现错误时,就会自动跳转到我们设置好的错误页上。
2,AsyncPostBackerrorMessage和AsyncPostBackerror这两个属性,主要是针对错误信息进行处理的。对应的方法为OnAsyncPostBackerror(当发生异步通讯错误时)。看这个例子吧:
前台代码:
<body>
<form id="form1" runat="server">
<%--AllowCustomErrorsRedirect属性设置为false,配合后台的自定义错误使用--%>
<asp:ScriptManager ID="ScriptManager1" runat="server" AllowCustomErrorsRedirect="false" OnAsyncPostBackerror="ScriptManager1_AsyncPostBackerror">
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />
</ContentTemplate>
</asp:UpdatePanel>
<%--自定义错误处理--%>
<div id="error"></div>
<script type="text/javascript" language="javascript">
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender,e)
{
e.set_errorHandled(true);
//将信息显示到上面的div区块中innerHTML,这里可以设置默认的错误信息
$get("error").innerHTML = "Sorry,an error has occurred: " + e.get_error().message;
setTimeout(function(){ $get("error").innerHTML = ""; },3000);//3秒后变为空
});
</script>
</form>
</body>
protected void Button1_Click(object sender,EventArgs e)
{
//自定义错误处理,配合web.config文件中的错误配置节点customErrors(设置为on的时候才生效,同时还要制定错误页)和AllowCustomErrorsRedirect(是否允许customErrors)使用
throw new Exception("错误信息提示!");
}
//异步刷新出现错误时,触发的事件
protected void ScriptManager1_AsyncPostBackerror(object sender,AsyncPostBackerrorEventArgs e)
{
//客户端接受到的错误的信息
ScriptManager.GetCurrent(this).AsyncPostBackerrorMessage = e.Exception.Message;
}
这样我们程序出错时,就出显示出错误信息!
这里我举了两个例子,来学习ScriptManager的属性方法,其他的也需要我们通过实践,来理解这些属性和方法的意义,这样我们才能更好的掌握。这里英文相对来说多了些,还是非常需要耐下心来认真读英文理解。总而言之,这里的控件学习和我们的控件学习没有什么区别,几个属性,方法完事。重要的是我们用一用,这样就能再用了,里边的属性方法不会了,我们可以有针对性的上网查一下!!!下一篇,学习一个非常重要的控件UpdatePanle控件。其实这篇博客里边也涉及到了。
ASP.NET AJAX(9)-ScriptManagerProxy
ASP.NET AJAX(9)-ScriptManagerProxy
1.使用时机:有罩MasterPage或是使用UserControl的时候
2.因为一个页面只能放一个ScriptManager,所以当:
MasterPage放ScriptManager→ContentPage就放ScriptManagerProxy
UserControl放ScriptManagerProxy→用UserControl那个页面就放一个ScriptManager
可以说ScriptManerProxy就是ScriptManager的职务代理人啦。
3.判断页面是否有ScriptManager?
原文:大专栏 ASP.NET AJAX(9)-ScriptManagerProxy
ASP.NET Webforms ASP.NET Ajax与ASP.NET MVC和Ajax框架自由
ASP.NET Webforms + ASP.NET AJAX
要么
ASP.NET MVC + JavaScript Framework of your Choice
ASP.NET Webforms / ASP.NET AJAX与MVC有任何限制吗?
解决方法
>我真的不喜欢asp.net ajax控件的实现,我遇到了很多时间,事件和调试回发问题的问题。我从http://encosia.com/2007/07/11/why-aspnet-ajax-updatepanels-are-dangerous/学到了很多
> asp.net项目我们使用了MVP模式http://www.codeplex.com/aspnetmvp,并且模式运行良好。但是,由于我们直接与服务器端控件进行交互(即大量的gridview操作),所以我们在视图中得到了很多代码。这个代码与单元测试框架几乎是不可接受的。我们应该更加努力地将代码保留在视图之外,但在某些情况下,它更容易,更不麻烦。
一次我选择使用asp.net表单开发将是使用gridview控件。我们正在使用jquery为我们的JavaScript框架与MVC,还没有找到一个很好的gridview像控件。我们有功能的东西,但是我们沉迷于学习,调整和调试的时间与使用asp.net服务器端控件的时间一直很大。一个失去了微软提供的非asp.net表单开发的所有好的小部件。这些小部件的丢失正在释放,同时当您第一次启动时也是可怕的。
最后我很高兴我们正在做MVC开发。我的团队和我学到了一个新的框架(我们之前只有asp.net开发者),并且已经用html和javascript弄脏了我们的手。如果我们有需要,这些技能可以用于其他项目或其他语言。
今天关于[ASP.NET Ajax] ECMAScript基础类以及Asp.net Ajax对类<Object>的扩展和ajax 类型的介绍到此结束,谢谢您的阅读,有关AJAX——ASP.NET AJAX(三)ScriptManagerProxy,Timer和UpdateProgress、AJAX——ASP.NET AJAX框架(一)ScriptManager、ASP.NET AJAX(9)-ScriptManagerProxy、ASP.NET Webforms ASP.NET Ajax与ASP.NET MVC和Ajax框架自由等更多相关知识的信息可以在本站进行查询。
本文标签: