资料中如实是说: 
      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的用法

    资料中如实是说:       1, ScriptManager(脚本控制器)是asp.net ajax存在的基础. 2, 一个页面只允许有一个ScriptManager,并且放在其他ajax控件的前面 ...

  2. DropDownList 下拉框选择改变,促发事件和防全局刷新(记录)

    代码: <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:Script ...

  3. 移植Max中的控制器到Unity - 前言

    一切源自于一个ppt http://pan.baidu.com/s/1kT8x2V9 看到这个ppt之前,其实自己也想过将Max当中的一些约束移植到游戏中,一方面是那时候能力不足,另一方面还是自己不那 ...

  4. 【整理】Ajax异步实现的几种方式总结

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术.GET ...

  5. ASP.NET AJAX应用

    ASP.NET AJAX能够快速地创建具有丰富的用户体验的页面,而且这些页面由可靠和熟悉的用户接口元素组成,包括一个能快速响应的用户体验和熟悉的用户元素. 使用ASP.NET  AJAX,可以改善We ...

  6. webkit内核分析之 Frame

    参考地址:http://blog.csdn.net/dlmu2001/article/details/6164873 1.    描述 Frame类是WebCore内核同应用之间联系的一个重要的类.它 ...

  7. windows XP系统内核文件分析(全)

    Windows XP个别 System32 文件 System32 文件夹下个别要移除的文件 我们就要删除另外600 个 system32 文件...我们要一次把它们全都解决掉. 以下是我所删除的 S ...

  8. cocos-js 精灵移动转圈

    cc.Class({ extends: cc.Component, properties: { carModel: { default: null, type: cc.Sprite }, bgMode ...

  9. 【FIORI系列】SAP 一文读懂SAP Fiori是什么

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[FIORI系列]SAP 一文读懂SAP Fio ...

随机推荐

  1. java 创建匿名对象及声明map list时初始化

    java 创建匿名对象 类似于c# 中的 new { a:"aaa",b:"bbb"}; 1 创建匿名对象Object myobj = new Object() ...

  2. ps:界面概览

    首先我们来认识一下Photoshop的界面组成,如下图是一个典型的界面.为了方便识别,我们加上了颜色和数字. 1:顶部的红色区域是菜单栏,包括色彩调整之类的命令都存放在从菜单栏中.在我们的教程中使用[ ...

  3. HTML5 中list 和datalist实例

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  4. CSS3 flexbox弹性布局实例

    常用例子 1.居中对齐 <!DOCTYPE html> <head> <meta charset="utf-8"> <style type ...

  5. 触发写Redo&nbsp;Log的条件

    参见:http://www.ixora.com.au/notes/redo_write_triggers.htm http://www.eygle.com/archives/2005/02/redoa ...

  6. 对getBoundingClientRect属性的研究

    1.getBoundingClientRect用于获取某个元素相对于视窗的位置集合.集合中有top, right, bottom, left等属性. .top:元素上边到视窗上边的距离; right: ...

  7. [USACO16JAN]愤怒的奶牛Angry Cows (单调队列优化dp)

    题目链接 Solution 应该可以用二分拿部分分,时间 \(O(n^2logn)\) . 然后可以考虑 \(n^2\) \(dp\) ,令 \(f_i\) 代表 \(i\) 点被激活,然后激活 \( ...

  8. 20180704-Java开发环境配置

    介绍如何搭建Java开发环境推荐:在Cloud Studio中运行Java程序 Java是一种跨平台的编程语言,想要让你的计算机能够运行Java程序那么就需要安装JRE,而想要开发Java程序,那么就 ...

  9. 01.cordova 安装及项目创建

    1.安装cordova cnpm install -g cordova@6.0.0  这里用6.0.0版本,默认下载最新版本,创建项目时候会报错  2.创建项目 cordova create myap ...

  10. jQuery入门教程-文档操作方法

    一.append()和appendTo() 1.1 append()方法 <body> <p>好好学习</p> <button>append() 方法& ...