微软AJAX 教学系列第一讲:ScriptManager控件
本文是翻译 http://www.asp.net/上推出了最新的AJAX系列教程.由于本人第一次进行翻译,有翻译不准,不正确的地方,望大家批评指正 .
笑Q
在上一篇文章中.我们通过简单小例子介绍了页面的局部刷新.在这篇文章中.我们介绍下MicroSoft AJAX最重要控件之一的ScriptMananger的相关属性和方法
1.客户端的相关属性
属性 | 类型 | 描述 |
AllowCustomeErrorsRedirect | Bool | 定义是否使用webconfig中自定义的错误处理 |
AsyncPostBackErrorMessage | String | 定义当error发生的时候在客户端呈现的错误信息 |
AsyncPostBackTimeOut | Int32 | 获取或设置一个值,该值指示在未收到响应时异步回发超时前的时间(以秒为单位)。 |
EnableScriptGlobalization | Bool | 获取或设置一个值,该值指示 ScriptManager 控件是否呈现支持分析区域性特定的信息并设置其格式的脚本。 |
EnableScriptLocalization | Bool | 获取或设置一个值,该值指示 ScriptManager 控件是否呈现脚本文件的本地化版本。 |
ScriptLoadTimeout | Int32 | 定义装在客户端脚本的最大时间. |
ScriptMode | Enum (Auto, Debug, Release, Inherit) | 获取或设置一个值,以指定是呈现客户端脚本库的调试版本还是发布版本。 |
ScriptPath | String | 获取或设置位置的根路径,该位置用来建立指向 ASP.NET AJAX 和自定义脚本文件的路径。 |
属性 | 类型 | 描述 |
AuthenticationService | AuthenticationService-Manager | 获取与当前 ScriptManager 实例关联的 AuthenticationServiceManager 对象。 |
IsDebuggingEnabled | Bool | 获取一个指示是否呈现客户端脚本库的调试版本的值 |
IsInAsyncPostback | Bool | 获取一个指示是否在部分呈现模式下执行当前回发的值。 |
ProfileService | ProfileServiceManager | 获取与当前 ScriptManager 实例关联的 ProfileServiceManager 对象。 |
Scripts | Collection<ScriptReference> | 获取一个包含 ScriptReference 对象(每个对象代表一个呈现给客户端的脚本文件)的 ScriptReferenceCollection 对象。 |
Services | Collection<ServiceReference> | 获取一个 ServiceReferenceCollection 对象,该对象包含 ASP.NET 在客户端上针对 AJAX 功能而公开的每个 Web 服务的 ServiceReference 对象。 |
SupportsPartialRendering | Bool | 获取一个指示客户端是否支持部分页面呈现的值。 |
Name | Type | 描述 |
SetFocus(string) | Void | 请求结束时,将浏览器焦点设置为指定控件。 |
标签 | 描述 |
<AuthenticationService> | 提供 ASP.NET authentication service.的详细实例 |
<ProfileService> | 提供 ASP.NET profiling service.的详细实例 |
<Scripts> | 提供额外的Script脚本引用 |
<asp:ScriptReference> | 指定特别的Script脚本引用 |
<Service> | 获取一个 ServiceReferenceCollection 对象,该对象包含 ASP.NET 在客户端上针对 AJAX 功能而公开的每个 Web 服务的 ServiceReference 对象。 |
<asp:ServiceReference> |
提供可以选择和追加的脚本
尽管ASP.NET 2.0 AJAX Extensions 在调试和发行的版本中包含整个脚本代码. 开发者可以像注册其他的脚本一样自由的设置自定义的脚本文件.
为了重载默认的内置脚本.你可以在ScriptManager类中通过注册 ResolveScriptReference 事件来实现.当这个方法被调用的时候.事件处理器就会自动的改变Script的路径,ScriptManager 就会发送不同的或者你自定义的脚本的副本到客户端/
UpdatePanels的自定义错误处理
尽管更新是由UpdatePanel 控件触发的.但是错误的处理和自定义错误信息还是通过ScriptManager控件来处理的.这个是通过页面上的AsyncPostBackError来呈现异常处理逻辑的.你可以通过AsyncPostBackErrorMessage属性来设置显示的错误信息.
当然你可以通过客户端的自定义错误处理机制.
例如:Listing 5: Client-side script to display custom errors
<script type=”text/javascript”>
<!--
Sys.WebForms.PageRequestManager.getInstance().add_EndRequest( Request_End);
function Request_End(sender, args)
{
if (args.get_error() != undefined)
{
var errorMessage = “”;
if (args.get_response().get_statusCode() == “200”)
{
errorMessage = args.get_error().message;
}
else
{
// the server wasn’t the problem errorMessage = “An unknown error occurred”;
}
// do something with the errorMessage here.
// now make sure the system knows we handled the error.
args.set_errorHandled(true);
}
}
//-->
</script>
方法相当简单.上面的script脚本注册了在异步调用结束时的回调.它会检查是否有错误发生.如果有,获取错误的详细信息并通知runtime错误已经被自定义脚本处理.<!--
Sys.WebForms.PageRequestManager.getInstance().add_EndRequest( Request_End);
function Request_End(sender, args)
{
if (args.get_error() != undefined)
{
var errorMessage = “”;
if (args.get_response().get_statusCode() == “200”)
{
errorMessage = args.get_error().message;
}
else
{
// the server wasn’t the problem errorMessage = “An unknown error occurred”;
}
// do something with the errorMessage here.
// now make sure the system knows we handled the error.
args.set_errorHandled(true);
}
}
//-->
</script>