zoukankan      html  css  js  c++  java
  • Atlas学习手记(2):全面了解ScriptManager

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

     

    主要内容

    1.概述

    2Script Management

    3Web Service References

    4Error Handling

    5ScriptManagerProxy

     

    一.概述

    ScriptManagerAtlas一个重要的控件,它用来处理页面上的所有Atlas组件以及局部页面的更新,生成相关的客户端脚本,所有需要支持AtlasASP.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

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

    EnableScriptComponents="true|false"

    ID

    控件ID

    ID="ScriptManager1"

    OnPageError

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

    OnPageError="PageError Event Handler"

    runat

    总是runat="server"

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

    1EnablePartialRendering

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

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

    2EnableScriptComponents

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

    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:ServiceReference Path="MyWebService.asmx"/>

    Type

    指定Web Service的类型

    <atlas:ServiceReference Type="MyWebService"/>

    GenerateProxy

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

    GenerateProxy="true"

    四.Error Handling

    默认的出错信息应该是Exception.MessageScriptManager允许通过访问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网站提供的一个完整的例子:

    点击查看

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

    五.ScriptManagerProxy

    在本文开始的时候说到了对于需要支持AtlasASP.NET页面上有且只能有一个ScriptManager控件,如果遇到有master-page的情况,在master-pagecontent-page中需要引入不同的脚本,这时候需要在content-page中使用ScriptManagerProxy而不是ScriptManagerScriptManagerProxy是一个和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网站

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

    完整示例下载

  • 相关阅读:
    设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输人数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。请编程序
    请编程序将“China"译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China"应译为“Glmre”。请编一程序
    用下面的scanf 函数输人数据,使a=3,b=7,x=8.5,y=71. 82,cl='A',c2='a'。在键盘上应如何输入?
    分析下面的程序:
    购房从银行贷了一笔款d,准备每月还款额为p,月利率为r,计算多少月能还清。设d为300 000元,p为6000元,r为1%。对求得的月份取小数点后一位,对第2位按四舍五人处理
    存款利息的计算。有1000元,想存5年,可按以下5种办法存(1)一次存5年期 (2)先存2年期,到期后将本息再存3年期 (3)先存3年期,到期后将本息再存2年期 (4)存1年期,到期后将本息再存1年期,连续存5次 (5)存活期存款,活期利息每一季度结算一次
    假如我国国民生产总值的年增长率为7%, 计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为$p = (1+r)^n$ ,其中r为年增长率,n为年数,p为与现在相比的倍数
    用自顶向下、逐步细化的方法进行以下算法的设计:输出1900---2000年中是软黏的年份,符合下面两个条件之一的年份是闰年
    什么叫结构化程序设计?它的主要内容是什么?
    windows命名管道
  • 原文地址:https://www.cnblogs.com/Terrylee/p/Atlas_ScriptManager.html
Copyright © 2011-2022 走看看