星空网 > 软件开发 > ajax

Atlas学习手记(2):全面了解ScriptManager

上一篇 / 下一篇  2007-09-30 16:47:31    文章类型: 转载

查看( 385 ) / 评论( 0 ) / 评分( 0 / 0 )

摘要:ScriptManager是Atlas一个重要的控件,它用来处理页面上的所有Atlas组件以及局部页面的更新,生成相关的客户端脚本,所有需要支持Atlas的ASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,还可以指定页面错误处理等。

 

主要内容

1.概述

2.Script. Management

3.Web Service References

4.Error Handling

5.ScriptManagerProxy

 

一.概述

ScriptManager是Atlas一个重要的控件,它用来处理页面上的所有Atlas组件以及局部页面的更新,生成相关的客户端脚本,所有需要支持Atlas的ASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,还可以指定页面错误处理。一个完整的ScriptManager形式如下:

<atlas:ScriptManager

    EnablePartialRendering="true|false"

    EnableScriptComponents="true|false"

    ID="ScriptManager1"

    OnPageError="PageError Event Handler"

    runat="server"



    <ErrorTemplate>

        <!-- text and HTML elements -->

        <span id="errorMessageLabel" runat="server"></span>

        <input id="okButton" type="button" value="OK" runat="server" />

    </ErrorTemplate>

    <Scripts>

        <atlas:ScriptReference

            Browser="browser reference"

            Path="script file path"

            ScriptName="script file name"

        />

    </Scripts>

    <Services>

        <atlas:ServiceReference

            GenerateProxy="true|false"

            Path="server path name"

            Type="type name"

        />

    </Services>

</atlas:ScriptManager>

ScriptManager的属性解释如下:

属性名

说明

EnablePartialRendering

是否开启页面局部更新功能,默认值为false

EnablePartialRendering="true|false"

EnableScriptComponents

是否启用脚本模式,默认值为true

EnableScriptComponents="true|false"

ID

控件ID

ID="ScriptManager1"

OnPageError

页面错误处理,后面会详细讲到

OnPageError="PageError Event Handler"

runat

总是runat="server"

关于EnablePartialRendering和EnableScriptComponents,我觉得Flier Lu解释的比较透彻:

1.EnablePartialRendering

传统的Post Back模式页面,在用户submit时会重绘整个页面,并导致浏览器显式的闪烁。而在基于AJAX技术的Altas框架中,可以通过UpdatePanel标签指定需要重绘的局部。这样一来页面在处理请求时,会首先根据ScriptManager.IsInPartialRenderingMode属性判断是否在重绘模式中。如果在重绘模式,则仅仅将需要重绘的UpdatePanel内容,返回给客户端浏览器,并由Altas自动进行内容的更新。通过这种模式,使用者可以在对代码几乎无需修改的情况下,直接享受到AJAX带来的客户端用户体验的提升。

我们也可以通过IsInPartialRenderingMode属性来判断当前页面是否开启了局部更新功能。

2.EnableScriptComponents

脚本模式是Altas引入的基于的描述性组件定义模型,可以通过一组标签,定义页面中已有Web组件的AJAX行为,而无需对现有组件进行修改和调整。而且因为所有的行为都是由Altas引擎在客户端动态绑定,所以组件的目标也可不仅仅限于现有的Web组件。具体的介绍可以参考Atlas 。而对于某些特殊情况,例如ASP.NET 2.0中的master页面,可以通过此属性关闭脚本支持,以大幅度简化页面的功能,此时Altas会自动使用AtlasRuntime.js替换完整的Atlas.js脚本

二.Script. Management

Script属性用来包含那些ASP.NET Atlas自带的标准JS库或者是自定义的JS脚本。我们可以使用Path属性来指定一个JS的路径或者使用ScriptName来指定脚本名。ScriptReference示例如下:

<atlas:ScriptManager ID="ScriptManager1" runat="server" >

    <Scripts>

        <atlas:ScriptReference ScriptName="AtlasUIDragDrop" />

        <atlas:ScriptReference ScriptName="AtlasWebParts" />

        <atlas:ScriptReference Path="MyCustom.js" />

    </Scripts>

</atlas:ScriptManager>

ScriptReference的属性如下:

属性

描述

Path

自定义JS脚本的路径

Path="MyCustom.js"

ScriptName

指定标准库中的JS脚本名,其中可以指定的有:AtlasUIDragDrop、AtlasUIGlitz、AtlasUIMap、AtlasWebParts

ScriptName="AtlasUIDragDrop"

Browser

指定脚本适用的浏览器

ScriptManager确保每一个脚本只包括一次,试图添加多次将会被忽略。我们也可以使用RegisterScriptReference()方法来添加JS脚本,在使用时要注意添加的JS脚本是否已经存在了。

三.Web Service References

ServiceReferences指定将通过JS来调用的Web Service,同样它也支持通过Path指定Web Service的路径或者通过Type来指定类型。ServiceReferences示例如下:

<atlas:ScriptManager ID="ScriptManager1" runat="server" >

    <Services>

        <atlas:ServiceReference Path="MyWebService.asmx"/>

        <atlas:ServiceReference Type="MyWebService"/>

    </Services>

</atlas:ScriptManager>

ServiceReferences的属性如下:

属性

描述

Path

指定.asmx的路径

<atlas:ServiceReferencePath="MyWebService.asmx"/>

Type

指定Web Service的类型

<atlas:ServiceReferenceType="MyWebService"/>

GenerateProxy

是否生成客户端脚本的代理

GenerateProxy="true"

四.Error Handling

默认的出错信息应该是Exception.Message,ScriptManager允许通过访问PageErrorEventArgs参数重新在OnPageError中自定义我们的错误信息。我们也可以使用ErrorTemplate来自定义错误信息的显示样式,ErrorTemplate中必须包含如下元素:

控件/元素

属性

说明

Button

id="okButton"

runat="server"

用来关闭错误信息

<span>或者<div>

id="errorMessageLabel"

runat="server"

显示错误信息

注意以上元素的属性不能更改,包括控件的id,完整的ErrorTemplate代码:

<atlas:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" OnPageError="Page_ErrorHandler" runat="server">

    <ErrorTemplate>

        <div>

            <p><span id="errorMessageLabel" runat="server"></span></p>

            <p><input id="okButton" type="button" value="OK" runat="server"/></p>

        </div>

    </ErrorTemplate>

</atlas:ScriptManager>

看一下Atlas网站提供的一个完整的例子:

点击查看
<% @ Page Language="C#" %>

<script runat="server">

    protected void Page_ErrorHandler(object sender, PageErrorEventArgs e)

     {

        e.ErrorMessage = "Exception at " + DateTime.Now.ToString() +

            "; Error Message: " + e.Error.Message;

    }

    protected void ErrorButton_Click(object sender, EventArgs e)

     {

        throw new Exception("error button clicked");

    }

</script>

<html ="http://www.w3.org/1999/xhtml">

<head id="Head1" runat="server">

    <title>"Atlas" Error Handling</title>

    <atlas:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" OnPageError="Page_ErrorHandler"

        runat="server">

        <ErrorTemplate>

            <div style="width: 450px; height: 300px; padding: 10px; border: solid 3px black;

                background: #ffd; text-align: left;">

                <h1>

                    Server Error</h1>

                <p>

                    An unhandled exception with the following message has occured on the server:</p>

                <p>

                    <span id="errorMessageLabel" runat="server"></span>

                </p>

                <p>

                    <input id="okButton" type="button" value="OK" runat="server" /></p>

            </div>

        </ErrorTemplate>

    </atlas:ScriptManager>

</head>

<body>

    <form id="form1" runat="server">

        <div>

            <h1>

                "Atlas" Error Handling</h1>

            <p>

                This example demonstrates the use of an <code>ErrorTemplate</code> and a <code>PageError</code>

                handler, to display a custom error message when an unhandled exception occurs on

                the server.</p>

            <atlas:UpdatePanel ID="Panel1" Mode="Always" runat="server">

                <ContentTemplate>

                    <p>

                        Server time:

                        <%= DateTime.Now.ToString() %>

                    </p>

                    <p>

                        <asp:Button ID="UpdateButton" Text="Update Time" runat="server" />

                        <asp:Button ID="ErrorButton" Text="Error" OnClick="ErrorButton_Click" runat="server" /></p>

                </ContentTemplate>

            </atlas:UpdatePanel>

        </div>

    </form>

</body>

</html>

运行后单击Error按钮,会出现如下界面:

五.ScriptManagerProxy

在本文开始的时候说到了对于需要支持Atlas的ASP.NET页面上有且只能有一个ScriptManager控件,如果遇到有master-page的情况,在master-page和content-page中需要引入不同的脚本,这时候需要在content-page中使用ScriptManagerProxy而不是ScriptManager,ScriptManagerProxy是一个和ScriptManager非常的类似的控件。示例:

Master-page:

<atlas:ScriptManager runat="server" ID="ScriptManager1" EnablePartialRendering="true" />

Content-page:

<atlas:ScriptManagerProxy runat="server" ID="ScriptManagerProxy1">

    <Scripts>

        <atlas:ScriptReference ScriptName="AtlasUIDragDrop" />

    </Scripts>

</atlas:ScriptManagerProxy>

完整的示例可以参见Atlas网站

关于Atlas的ScriptManager介绍就到这里了,本人也是刚开始接触Atlas,希望能跟大家共同交流,这样我的Atlas学习之旅也许会轻松一些。

原文地址:http://www.cnblogs.com/Terrylee/archive/2006/07/26/Atlas_ScriptManager.html

 

原标题:Atlas学习手记(2):全面了解ScriptManager

关键词:ip

ip
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流