Programming Microsoft ASP.NET 4
Dino Esposito
Part V: The Client Side
Chapter 20: Ajax Programming
Partial Rendering in ASP.NET
You do much of your ASP.NET Web Forms programming using server controls. A server control normally emits HTML markup. In an Ajax scenario, a server control emits markup plus some script code to support Ajax requests. This is not exactly a change of paradigm in the name of Ajax, but it is a good compromise between the classic Web and requested Ajax capabilities.
ASP.NET partial rendering works according to this idea. It provides a new container control— the UpdatePanel control—that you use to surround portions of existing pages, or portions of new pages developed with the usual programming model of ASP.NET. A postback that origi- nates within any of these updatable regions is intercepted by some JavaScript code that the UpdatePanel control has injected in the page. As a result, only the controls in a given region are updated.
The UpdatePanel control, however, requires the use of another server control—the ScriptManager control—which is responsible, among other things, for injecting in the page any required script code
The ScriptManager Control
The main control in the server infrastructure of ASP.NET for Ajax is the ScriptManager control and its twin, the ScriptManagerProxy control. You will find just one instance of the ScriptManager control in each ASP.NET Ajax page. The ScriptManagerProxy control is used only in master pages scenarios to reference the original script manager from content pages.
The ScriptManager control manages and delivers script resources, thus enabling client scripts to make use of the JavaScript type system extensions and other JavaScript features that
we covered earlier in this chapter. The ScriptManager control also enables features such as partial-page rendering and service and page method calls. The following code shows the simplest and most common way to insert the script manager in an ASP.NET page:
lt;asp:ScriptManager runat='server' ID='ScriptManager1' /gt;
The control produces no user interface, works exclusively on the server, and doesnrsquo;t add any extra bytes to the page download.
Properties of the ScriptManager Control
The ScriptManager control features a number of properties for you to configure its expected behavior. Table 20-1 details the supported properties.
TABLE 20-1 Properties of ScriptManager
Property Description
AjaxFrameworkAssembly Gets the Ajax framework assembly that components on the page
are currently using.
AjaxFrameworkMode Gets or sets how client scripts of the Microsoft Ajax client library will
be included on the client: as local scripts, from ASP.NET assemblies, or nothing.
AllowCustomErrorsRedirect Indicates whether custom error redirects will occur during an
asynchronous postback. The property is set to true by default.
AsyncPostBackErrorMessage Gets and sets the error message to be sent to the client when an
unhandled exception occurs on the server during an asynchronous postback. If this property is not set, the native exceptionrsquo;s message will be used.
AsyncPostBackSourceElementID Gets the ID of the server control that triggered the asynchronous
postback. If therersquo;s no ongoing asynchronous postback, the property is set to the empty string.
AsyncPostBackTimeout Gets and sets the timeout period in seconds for asynchronous
postbacks. A value of zero indicates no timeout. The property is set to 90 by default.
Property Description
AuthenticationService Gets an object through which you can set preferences for the
client-side authentication service.
ClientNavigateHandler Indicates the name of the JavaScript method that handles the
Sys.Application.navigate event on the client when the user navigates back to a page from the history list.
CompositeScript Gets a reference to the composite script (if any) for the current
page.
EmptyPageUrl The URL to use if the target Web page is empty during a history
navigation.
EnableCdn Indicates whether client script references are loaded from a content delivery network (CDN) path.
EnableHistory Indicates whether the page supports history point management.
EnablePageMethods Indicates whether static page methods on an ASP.NET page can be
called from client script. The property is set to false by default.
EnablePartialRendering Indicates whether partial rendering is enabled for the page. The property is set to true by default.
EnableScriptGlobalization Indicates whether the ScriptManager control renders script in the
client that supports the parsing and formatting of culture-specific information. The property is set to false by default.
EnableScriptLocalization Indicates whether the ScriptManager control retrieves script files
for the current culture, if they exist. The property is set to false by default.
EnableSecureHistoryState Indicates whether to encrypt the history state string.
IsDebuggingEnabled Indicates whether the debug versions of client script libraries will be
rendered. The debug attribute on the @Page directive doesnrsquo;t affect this property.
IsInAsyncPostBack Indicates whether the current page request is the result of
剩余内容已隐藏,支付完成后下载完整资料
微软编程ASP.NET 4
Dino Esposito
第五部分:客户端
20章:Ajax编程
在ASP.NET部分呈现
你做你的ASP.NET Web窗体编程使用服务器控件。一个服务器控件通常发出的HTML标记。在Ajax的情况下,一个服务器控件发出标记加上一些脚本代码支持Ajax请求。这是不是在Ajax的名字范式的变化,但它是经典的Web请求的AJAX功能之间的一个很好的妥协。
ASP.NET部分呈现根据这一思想工作。它提供了一个新的容器控件UpdatePanel控件,您使用环绕现有网页,或与ASP.NET通常的编程模型开发的新网页。回发,原能在所有这些更新的区域被一些JavaScript代码UpdatePanel控件在页面注入。其结果是,只有在给定区域中的控件被更新。
UpdatePanel控件,但是,需要另一个服务器控件负责ScriptManager控件的使用,在其他事情上,将页面中的任何所需的脚本代码
ScriptManager控件
在ASP.NET的服务器基础设施的主要控制的是Ajax控件和其孪生的scriptmanagerproxy控制。你会发现在每个ASP.NET AJAX页面只是一个ScriptManager控件实例。的scriptmanagerproxy控制仅用于母版页场景参考原始脚本管理器从内容页。
ScriptManager控件管理和提供的脚本资源,从而使客户端脚本使用JavaScript类型系统的扩展和其他JavaScript功能。我们在本章早些时候讨论了。ScriptManager控件还允许特征如局部页面渲染服务和网页的方法调用。下面的代码显示了插入脚本管理器在ASP.NET页面的最简单和最常见的方式:
lt;asp:ScriptManager runat='server' ID='ScriptManager1' /gt;
该控件不产生用户界面,仅在服务器上工作,并且不向页面下载添加任何额外字节。
该控件的属性
ScriptManager控件提供了一些属性为你配置其预期的行为。表20-1细节支持的特性
属性 描述
AuthenticationService 获取一个对象,您可以通过该对象设置
客户端认证服务。
ClientNavigateHandler 显示名称的JavaScript方法处理
sys.application.navigate事件在客户端时,
用户导航从历史列表回页。
AjaxFrameworkAssembly 得到的Ajax框架组件页上的部件
目前正在使用。
AjaxFrameworkMode 获取或设置客户端脚本微软AJAX客户端库将
属性 描述
AllowCustomErrorsRedirect 指示是否将发生在一个自定义错误重定向
异步回发。默认情况下,属性设置为true。
AsyncPostBackErrorMessage 获取并设置当
未处理的异常发生在服务器异步回发期间。如果未设置此属性,则将使用本机异常消息。
AsyncPostBackSourceElementID 获取引发异步的服务器控件的id。回发。如果没有持续的异步回发,属性设置为空字符串。
AsyncPostBackTimeout 获取并设置异步的秒超时时间回发。零值表示没有超时。属性默认设置为90。
CompositeScript 获取当前的复合脚本(如果有的话)的引用页。
EmptyPageUrl 如果目标页在历史中为空,则使用url导航。
EnableCdn 客户端脚本引用是表明是否加载来自内容交付网络(CDN)的路径。
EnableHistory 指示页是否支持历史点管理。
EnablePageMethods 指示是否在ASP.NET页面的静态页面的方法可以
从客户端脚本调用。默认情况下,该属性设置为false。
EnablePartialRendering 指示是否启用页的部分呈现。默认情况下,属性设置为true。
EnableScriptGlobalization 指示控件在呈现脚本支持分析和格式化特定文化信息的客户端。默认情况下,该属性设置为false。
EnableScriptLocalization 指示控件检索脚本文件对于当前的文化,如果他们存在。默认情况下,该属性设置为false。
EnableSecureHistoryState 指示是否加密历史状态字符串。
IsDebuggingEnabled 指示客户端脚本库的调试版本是否将
提供.“页”指令上的调试属性不影响此属性
IsInAsyncPostBack 指示当前页请求是否为异步回发。
IsNavigating 指示当前是否正在处理导航事件。
LoadScriptsBeforeUI 指示脚本是否在标记之前或之后加载页面UI加载。
ProfileService 获取一个对象,您可以通过该对象设置客户端配置文件服务的首选项。
RoleService 获取一个对象,您可以通过该对象设置客户端角色服务的首选项。
ScriptMode 获取并设置当多个类型可用时加载的脚本类型(调试或零售)。可能的值来自ScriptMode枚举类型:汽车、继承、调试或释放。默认值是自动的,这意味着脚本的类型是确定的。
ScriptPath 指示脚本应该从该路径加载,而不是从程序集web资源加载。
Scripts 得到一系列脚本引用ScriptManager控件应该包括在页。
Services 获取一个集合,ScriptManager服务引用
控件应包含在页面中。
SupportsPartialRendering 指示特定浏览器或浏览器版本是否可以支持部分页面渲染。如果此属性设置为false,不论其enablepartialrendering属性值,无局部渲染将支持网页上的。默认情况下,属性设置为true。
脚本管理器是任何ASP.NET AJAX页面的神经中枢,完成所有的工作使Ajax功能预期的功能。使Ajax的功能主要是在正确的地方正确的脚本注入。脚本管理器保存ASP.NET开发者从JavaScript中发展了。
该控件的方法
表20-2列出ScriptManager控件定义的方法。
方法 描述
AddHistoryPoint 创建历史点,并将其添加到浏览器的历史堆栈中。
GetCurrent 静态方法,返回ScriptManager控件实例控制当前页上的活动。
GetRegisteredArrayDeclarations返回一个只读集合ECMAScript数组
以前注册的声明。
GetRegisteredClientScriptBlocks返回客户端脚本块的只读集合
以前注册的控件。
GetRegisteredDisposeScripts返回一个只读的处理脚本集合
以前注册的页面。
GetRegisteredExpandoAttributes返回一个只读集合属性的自定义(扩展)
以前注册的页面。
GetRegisteredHiddenFields 返回隐藏字段的只读集合
以前注册的页面。
GetRegisteredOnSubmitStatements 返回一个只读集合onsubmit语句
以前注册的页面。
GetRegisteredStartupScripts返回一个只读的启动脚本集合
以前注册的页面。
GetStateString 检索包含从浏览器历史中代表页状态的键/值对的字符串。
RegisterArrayDeclaration 静态方法,确保ecmascript数组中散发
部分渲染页。
RegisterAsyncPostBackControl注意指定的控件可以触发
异步回发事件从一个更新的面板。
RegisterClientScriptBlock 静态方法,确保指定的脚本在部分渲染页中被发送。 RegisterClientScriptInclude 静态方法,确保标记导入外部脚本文件通过lt;脚本gt;
标签的src属性是一个局部渲染页面发出。
RegisterClientScriptResource静态方法,确保标记导入外部页面资源中的脚本在部分呈现页中发出。
RegisterDataItem 注册将发送给客户端的数据,以及部分渲染页的输出。
RegisterDispose 寄存器的控制,需要客户端脚本运行在异步回发的最终处置客户资源。
RegisterExpandoAttribute 静态方法,确保标记导入自定义,非标准属性在部分呈现页中发出。
RegisterExtenderControl 注册扩展程序控件与目前ASP.NET AJAX页。
RegisterHiddenField 静态方法,确保指定的隐藏字段在部分呈现页中发出。
RegisterOnSubmitStatement 静态方法,确保客户端脚本相关与表单的onsubmit事件在部分页面发出的艺术。。
RegisterPostBackControl 指示脚本应该从该路径加载,而不是从程序集web资源加载。
RegisterScriptControl 注册一个脚本控制与目前ASP.NET AJAX页面。回发事件从一个更新的面板。
RegisterScriptDescriptors 注册一个与当前ASP.NET AJAX脚本描述页。
RegisterStartupScript 静态方法,确保客户端脚本在部分渲染页中lt;格式gt;标记的结束。这样,当页面刷新完成时,脚本将执行。
SetFocus 你可以输入焦点的元素指定客户端异步回发后。
所有静态方法都会在客户端页中发送某种形式的脚本和标记。这些静态方法类似的方法定义页面上的注册对象,你应该知道从早期版本的ASP.NET AJAX的对应。静态registerxxx方法回顾ScriptManager控件类确保脚本和标记一块适当的发射只有一次在ASP.NET AJAX页面的每个部分更新。同样,其他非registerxxx方法应视为工具,尤其是ASP.NET AJAX页面脚本代码发出适当的脚本代码,自定义控件相关联的。
注意在ScriptManager控件和页的注册对象之间的registerxxx方法有什么区别,这是ClientScriptManager类的一个实例吗?注册方法和使用ScriptManager服务于同一目的但截然不同的场景。
你只需要如果你需要发出一个AJAX回发脚本代码部分绘制操作期间使用ScriptManager控件的方法。一个AJAX回发中部分呈现操作是由运行时像往常一样处理,除了渲染阶段。此时,生成标记,并释放任何已注册的脚本。因为在AJAX回发ScriptManager负责标记渲染,它需要知道注册脚本发出ScriptManager。
如果你坚持使用clientscriptmananager Ajax页面的方法,你的风险,没有脚本将在刷新可更新面板发出的可能性。因此,页面的一部分可能会显示奇怪的行为。
该控件的事件
表20-3事件的细节通过ScriptManager控件。
事件 描述
AsyncPostBackError 发生异常时,去处理服务器上的异步回发期间。
Navigate
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[141266],资料为PDF文档或Word文档,PDF文档可免费转换为Word
课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。