资料中如实是说:       1, ScriptManager(脚本控制器)是asp.net ajax存在的基础. 2, 一个页面只允许有一个ScriptManager,并且放在其他ajax控件的前面.       3,ScriptManager掌管着客户端Ajax页的多有脚本,并在页面中注册Ajax类库,用来实现页面的局部更新和对Web服务的调用. 下面是scriptManager的结构:

下面介绍下ScriptManager的几个属性和一些子元素

a, EnablePartialRendering: (默认局部渲染)比较重要,用来表示此页面是否允许局部刷新(默认为true)    b, AllowCustomErrorsRedirect :当发生错误时候,是否导航到web.config中定义的错误页面,如果设置为false,则使用AsyncPostBackErrorMessage和OnAsyncPostBackError提示错误.    c, AsyncPostBackErrorMessage: 异步调用发生错误时的提示信息.    d, OnAsyncPostBackError: 异步调用发生错误时的事件    e, AsyncPostBackTimeOut: 异步调用的有效时间 默认为 90秒    f, AuthenticationService: 用来表示提供验证服务的路径.    g, ProfileService    表示提供个性化服务的路径    h, Scripts    对脚本的调用,可以恰套多个ScriptReference摸板对多个脚本文件的调用    i,  Service   对服务的调用 也可以恰套多个ServiceReference摸板以实现多个服务的引用

下面简单介绍下上面属性的基本使用格式:

调用脚本文件:

脚本语言我们可以直接写在页面的<script></script> 元素内 也可以使用注册方式在页面的head中 <script type="text/javascript" src=""> <script> 在ajax技术中也提供了一种注册方式, <asp:ScriptManager ID="ScriptManager" runat="server">          <Scripts>

<asp:ScriptReference Path="" />

<Scripts> </asp:ScriptManager>

从<Scripts>来看,它可以多个js文件,如果单能实现这个功能觉得微软有点话蛇添足,它的主要用途是调用ajax中已经存在的Javascrtpt脚本文件.

如: <asp:ScriptManager runat="server" ID="scriptManager">      <Scripts>          <asp:ScriptReference Assembly="Microsoft.Web.Preview" Name="PreviewScript.js"  />          <ssp:ScriptReference Assembly="Microsoft.Web.Preview" Name="PreviewDragDrop.js /> </asp:ScriptManager>

调用Web Service

ScriptManager的主要作用就是在客户端 调用一些服务器的代码,比较常用的就是将web service注册在客户端,从而可以用javascript脚本中实现对web service的调用

下面使用俩个例子说明对web service中方法的调用: 页面代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>无标题页</title>

</head> <body>     <form id="form1" runat="server">     <div>     <input type="text" id="txtName" />     <input type="button" value="带参数的web service方法调用" onclick="ReferencSercviceMethod2()" />     <input type="button" value="不带参数的web service方法调用" onclick="ReferenceServiceMethod1()" />     </div>     <asp:ScriptManager ID="ScriptManager1" runat="server">     <Services>     <asp:ServiceReference Path="WebServiceTest.asmx" />     </Services>     <Scripts>     <asp:ScriptReference Path="Script/JScript.js" />     </Scripts>     </asp:ScriptManager>     </form> </body> </html>

js代码: function ReferenceServiceMethod1(){     WebServiceTest.HelloWorld(GetResult); } function GetResult(result){     alert(result); }

function ReferencSercviceMethod2(){ WebServiceTest.SayHelloWorld(document.getElementById("txtName").value,GetResult); }

web service代码: using System; using System.Collections; using System.Web; using System.Web.Services; using System.Web.Services.Protocols;

/// <summary> ///WebServiceTest 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] //这句一定要加上 [System.Web.Script.Services.ScriptService] public class WebServiceTest : System.Web.Services.WebService {

public WebServiceTest () {

//如果使用设计的组件,请取消注释以下行         //InitializeComponent();     }

[WebMethod]     public string HelloWorld() {         return "Hello World";     }     [WebMethod]     public string SayHelloWorld(string name)     {         return "Hello World " + name;     }         }

下面简单介绍下用scriptManager的动态注册一个web service

可以删除掉上面页面代码中<Services></Services>段

在page的代码的load事件中加入下面代码:

protected void Page_Load(object sender, EventArgs e)     {         ServiceReference service = new ServiceReference("WebServiceTest.asmx");         ScriptManager1.Services.Add(service);     }

OnAsyncPostBackError的使用

在scriptManager中可以捕获局部更新失败的错误,OnAsyncPostError表示当回发处理发生错误时的事件 AsyncPostBackMessage表示发生错误时的提示信息。 页面代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!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>无标题页</title>

</head> <body>     <form id="form1" runat="server">     <asp:ScriptManager ID="ScriptManager1" runat="server"         onasyncpostbackerror="ScriptManager1_AsyncPostBackError">     </asp:ScriptManager>     <asp:UpdatePanel ID="UpdatePanel1" runat="server">         <ContentTemplate>             <asp:Button ID="Button1" runat="server" Text="触发错误按钮" onclick="Button1_Click" />         </ContentTemplate>     </asp:UpdatePanel>     </form> </body> </html>

cs文件代码: using System; using System.Collections; using System.Configuration; using System.Data; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts;

public partial class _Default : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)     {     }     protected void Button1_Click(object sender, EventArgs e)     {         try         {             (int.Parse("") + 1).ToString();         }         catch ( Exception  ex)         {             ex.Data["ExtraInfo"] = "类型转换错误!";             throw ex;         }     }

protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)     {         if (e.Exception.Data["ExtraInfo"] != null)         {             ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message + "---注意";         }         else         {             ScriptManager1.AsyncPostBackErrorMessage = "其他原因导致运行失败";         }     } }

ScriptManager的用法的更多相关文章

  1. ScriptManager和UpdatePanel用法 (ajax)

    ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖于ScriptManager存在, ...

  2. UpdatePanel的简单用法(转)

    微软AJAX虽然是过时的玩意,但是得维护公司之前的老项目,转载看看. 局部更新是ajax技术的最基本,也是最重要的用法,今天大概把asp.net ajax中的局部更新控件 updatepanel的用法 ...

  3. ToolkitScriptManager vs. ScriptManager 关于“只能向页面中添加 ScriptManager 的一个实例”讨论

    在使用ASP.NET设计AJAX功能网页时,需要首先声明ToolkitScriptManager或者ScriptManager控件,这些全局的脚本核心控制,然后才能使用众多的AJAX控件.如果没有创建 ...

  4. ScriptManager的使用方法 .(转)

    从这一节开始我将和大家一起学习ASP.NET AJAX的服务器端控件的用法.首先,安装ASPAJAXExtSetup.msi,可以到微软官方网站上去下载.安装之后当你新建项目的时候会多出一个ASP.N ...

  5. EditText 基本用法

    title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...

  6. jquery插件的用法之cookie 插件

    一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...

  7. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  8. [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法

    一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...

  9. python enumerate 用法

    A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...

随机推荐

  1. 从头开始编写一个Orchard网上商店模块(6) - 创建购物车服务和控制器

    原文地址: http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-pa ...

  2. android webview 访问https页面 SslError 处理

    在Android中,WebView可以用来加载http和https网页到本地应用的控件.但是在默认情况下,通过loadUrl(String url)方法,可以顺利loadUrl(“http://www ...

  3. zookeeper使用和原理探究(一)(转)

    zookeeper介绍zookeeper是一个为分布式应用提供一致性服务的软件,它是开源的Hadoop项目中的一个子项目,并且根据google发表的<The Chubby lock servic ...

  4. diamond专题(三)—— diamond架构

    大家好,这次为大家带来的是diamond的架构,架构如下图所示: 对该图进行一些说明: 1.作为一个配置中心,diamond的功能分为发布和订阅两部分.因为diamond存放的是持久数据,这些数据的变 ...

  5. HDU-5391 Zball in Tina Town

    (n-1)!/n 就是如果n为素数,就等于n-1else为0. 求素数表: Zball in Tina Town Time Limit: 3000/1500 MS (Java/Others) Memo ...

  6. linux网站配置文件.htaccess伪静态转换到IIS web.config中

    linux下的php网站放到Windows服务器IIS下.htaccess文件伪静态规则转换.   此办法只适合于linux下的php网站放到Windows服务器IIS下,网站除了主页面正常以外子页面 ...

  7. Git branch (分支学习)

    以前总结的一些git操作,分享在这里. Git 保存的不是文件差异或者变化量,而只是一系列文件快照.   - 列出当前所有分支 git branch <--merge> | <--n ...

  8. 洛谷P1126 机器人搬重物

    洛谷1126 机器人搬重物 题目描述 机器人移动学会(RMI)现在正尝试用机器人搬运物品.机器人的形状是一个直径1.6米的球.在试验阶段,机器人被用于在一个储藏室中搬运货物.储藏室是一个N*M的网格, ...

  9. 杭电HDOJ--ACM1002(JAVA解题,运用BigInteger)(自定义MBigInteger 简单实现大数处理----完善后可以实现百亿计算器)

    转载声明:原文转自http://www.cnblogs.com/xiezie/p/5501901.html     JAVA解题:   import java.util.*; import java. ...

  10. J2EE开发常用开源框架技术(转)

    主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 1持久层:1)Hiber ...