Atlas学习手记(2):全面了解ScriptManager
摘要: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
是否启用XML脚本模式,默认值为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
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脚本名,其中可以指定的有: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 : ServiceReference Path="MyWebService.asmx"/>
Type
指定Web Service的类型
< atlas : ServiceReference Type="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 xmlns="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 : Content-page :
< atlas:ScriptManager  runat ="server"  ID ="ScriptManager1"  EnablePartialRendering ="true"  />
< atlas:ScriptManagerProxy  runat ="server"  ID ="ScriptManagerProxy1" >

     < Scripts >

        <atlas:ScriptReference ScriptName="AtlasUIDragDrop" />

     </ Scripts >

</ atlas:ScriptManagerProxy >
完整的示例可以参见 Atlas网站。
关于Atlas的ScriptManager介绍就到这里了,本人也是刚开始接触Atlas,希望能跟大家共同交流,这样我的Atlas学习之旅也许会轻松一些。
完整示例下载

posted on 2006-07-26 13:04 TerryLee 阅读(2002) 评论(14)   编辑  收藏 引用 收藏至365Key 所属分类: D Ajax & Atlas 、 B .NET2.0技术

评论
不错,支持一下!   回复   
# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-26 15:25 Ring
TerryLee是一个非常非常爱学习的人!!!绝对支持!   回复   
# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-26 15:25 TerryLee
@sjkehh

谢谢,刚开始学习Atlas:-)   回复

# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-26 15:27 TerryLee
@Ring

谢谢支持:-)

我好像是在赶时髦,呵呵~~   回复

# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-27 12:44 Ring
Altas以后可能就是.Net Framwork的一部分。
并且可能年底会出最终的版本。
我是从 http://blogs.msdn.com/alainler/archive/2006/07/26/678730.aspx看到的。
是值得学习的好东西。   回复   
# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-27 12:49 TerryLee
@Ring

是啊,Atlas的确值得学习一下   回复

# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-28 13:15 我不是一只鹿
Hao~````喜欢你哦   回复   
# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-28 14:18 TerryLee
@我不是一只鹿
:-)   回复   
# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-28 17:09 liuyuer
ScriptManagerProxy 你用过吗?我一直没找到它的demo
我在content中放proxy,还是会报没有manager的错误。
我将manager放在了master上。

你是怎么用的?
   回复

# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-28 17:28 TerryLee
@ liuyuer
参考:
Master:
<% @ Master Language="C#" AutoEventWireup="true" CodeFile="MasterPage.master.cs" Inherits="MasterPage"  %>

<! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >

< html  xmlns ="http://www.w3.org/1999/xhtml"  >
< head  runat ="server" >
     < title > Untitled Page </ title >
</ head >
< body >
     < form  id ="form1"  runat ="server" >
     < div >
         < atlas:ScriptManager  ID ="ScriptManager1"  runat ="server" >
         </ atlas:ScriptManager >
            This is the Master Page. < br  />
            It contains this ScriptManager control: < br  />
         < br  />
         < asp:contentplaceholder  id ="ContentPlaceHolder1"  runat ="server" >
             < br  />
         </ asp:contentplaceholder >
         &nbsp;
     </ div >
     </ form >
</ body >
</ html >
Content:
<% @ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" Title="Untitled Page"  %>

< asp:Content  ID ="Content1"  runat ="server"  ContentPlaceHolderID ="ContentPlaceHolder1" >
    Hello here is the scriptmanager proxy control < br  />
     < atlas:ScriptManagerProxy  ID ="ScriptManagerProxy1"  runat ="server" >
     < Scripts >
        <atlas:ScriptReference ScriptName="AtlasUIDragDrop" />
     </ Scripts >
     </ atlas:ScriptManagerProxy >
</ asp:Content >

回复

# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-28 22:51 liuyuer
能不能给个可以run起来的DEMO下载?
为啥我的content中的updatepanel总是说找不到manager   回复   
# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-28 23:15 liuyuer
哦,我在官方网站找到了这个例子,多谢   回复   
# Atlas学习手记(6):使用Atlas UpdateProgress控件[TrackBack] 2006-07-29 11:07 TerryLee
摘要:在页面上执行较长时间的操作时,如果能够给用户提供一个类似于浏览器状态栏那样的进度条,将会使界面用户界面更加友好。在Atlas中,为我们提供的UpdateProgress控件可以轻松的实现这些。    查看原文   回复   
# Atlas学习手记(7):使用DragOverlayExtender实现拖放功能[TrackBack] 2006-07-30 10:53 TerryLee
DragOverlayExtender允许我们对任何控件添加类似于Drag-and-Drop Behaviors那样的拖放(Drag-and-Drop)功能,更重要的是如果要对已经存在的控件添加,我们不需要对原有控件做任何的改动,只需添加一个DragOverlayExtender就可以轻松实现。    查看原文   回复

# re: Atlas学习手记(2):全面了解ScriptManager 2006-07-26 14:33 sjkehh

全面了解ScriptManager相关推荐

  1. 服务器标记“asp:ScriptManager”不明确。

    转载的哦,解决了我遇到的问题了,好用~~~ 首先说下原先的情况,就是原本老项目的Web解决方案是使用.net framework 2.0的老版本, 所以机器也安装过Microsoft ASP.NET ...

  2. ScriptManager.RegisterStartupScript方法和Page.ClientScript.RegisterStartupScript() 区别

    ScriptManager.RegisterStartupScript方法 如果页面中不用Ajax,cs中运行某段js代码方式可以是: Page.ClientScript.RegisterStartu ...

  3. ScriptManager 帮助您实现 Web 应用程序的 AJAX 功能

    本文讨论: ScriptManager 在 ASP.NET AJAX 中的作用 ScriptManager 的隐式使用和显式使用 ASP.NET AJAX 对 Web 服务的支持 ASP.NET AJ ...

  4. 通过Ajax来简单的实现局部刷新(主要为C#中使用的UpdatePanel控件和ScriptManager控件)...

    1. ScriptManager和UpdatePanel控件联合使用可以实现页面局部异步刷新的效果.UpdatePanel用来设置页面中局部异步刷新的区域,它必须依赖于ScriptManager,因为 ...

  5. ScriptManager调用 无参数WebService

    在工程中添加一个 webservice 使用默认的 红色部分为后添加 为了要让ScriptManager识别这个WEBSERVICE WebService.cs using System; using ...

  6. 服务器控件的异步请求——UpdatePanel和ScriptManager

    aspx文件里面有以下一段代码 <body><form id="form1" runat="server"><div>< ...

  7. ScriptManager同时存在于两个dll中的问题

    错误 44 类型"System.Web.UI.ScriptManager"同时存在于 "c:\WINDOWS\assembly\GAC_MSIL\System.Web.E ...

  8. 关于scriptManager与JS代码兼容问题

    在后台代码中: ScriptManager.RegisterClientScriptBlock(this.Page, this.GetType(), "TimeInvalid", ...

  9. ScriptManager.RegisterAsyncPostBackControl 方法

    来源:VS2012帮助文档 用途: 将控件注册为异步回发的触发器 语法: public void RegisterAsyncPostBackControl(Control control ) 参数 c ...

  10. Page.ClientScript、ClientScript、ScriptManager、ClientScriptManager等的详细解说

    在 .aspx.cs页面中,输入这四个东西:Page.ClientScript.ClientScript.ScriptManager.ClientScriptManager,均会出提示,表示它们均可用 ...

最新文章

  1. 消防信号二总线有没电压_消防的电源总线和二总线的区别,二总线是不是信号..._消防考试_帮考网...
  2. 【转】 Android新特性介绍,ConstraintLayout完全解析
  3. 《javascript高级程序设计》笔记:原型图解
  4. 波特率_不同波特率CAN总线系统如何进行数据收发
  5. linux将日期和日历信息追加到文件中_Linux任务调度
  6. js 树形json转以叶子结点为基准的扁平结构
  7. 哲学家就餐问题python_Python实现哲学家就餐问题实例代码
  8. LinuxShell脚本之利用rsync+ssh实现Linux文件系统远程备份
  9. PostgreSQL最常见问题
  10. 防刷新ajax视频教程,【赖国荣】Ajax基础与提升第7讲:ajax实现刷新内容实例讲解...
  11. 黑苹果无线网卡的另一种解决方案
  12. C++代码字符舞-极乐净土
  13. 一行代码获取android手机deviceId
  14. 磁盘的扩展卷和压缩卷显示灰色,无法使用
  15. python画圆角矩形_js绘制圆角矩形
  16. 【源码篇】源码阅读集合
  17. Python初遇问题5.16
  18. SQL SERVER数据库命名编码规范
  19. 阿龙的学习笔记---Linux GDB 调试工具(博客转载总结)
  20. Z字形变换(Java)

热门文章

  1. 【SQL】窗口函数:求数据的整体百分比、整体累计值,组内累计值和组内累计百分比...
  2. 基于原生JS项目使用Vue3 + Surely Vue Table组件
  3. android_day01
  4. python pip、conda、windows CMD常用命令大全!
  5. 井字棋游戏(电脑先)
  6. WhiteBalance
  7. 设立分公司,还是子公司更省税
  8. 动画,在我眼中,详细
  9. Cesium自定义编辑多边形
  10. win10服务器密码怎么修改,win10服务器ip地址修改密码