博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ScriptManager的简单用法
阅读量:6715 次
发布时间:2019-06-25

本文共 4981 字,大约阅读时间需要 16 分钟。

资料中如实是说: 

      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" "">

<html xmlns="">

<head runat="server">
    <title>无标题页</title>

</head>

<body>
    <form id="form1" runat="server">
    <div>
    <input type="text" id="txtName" />
    <input type="button" value="带参数的web service方法调用" οnclick="ReferencSercviceMethod2()" />
    <input type="button" value="不带参数的web service方法调用" οnclick="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 = "")]
[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" "">

<html xmlns="">

<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="触发错误按钮" οnclick="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 = "其他原因导致运行失败";
        }
    }
}

转载于:https://www.cnblogs.com/biye/articles/2487001.html

你可能感兴趣的文章
谈谈网络推广团队每天工作流程、工作标准、考核
查看>>
Hyper-v 3.0最佳实践分析程序(BPA)
查看>>
Cisco网络设备安全管理和报告
查看>>
七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理
查看>>
将组策略应用到满足条件的计算机---配置组策略筛选
查看>>
PHP中的$this和$that指针使用案例
查看>>
SQL Server 2012 内存计数器的变化
查看>>
ubuntu无法修改ROOT密码的问题解决
查看>>
老男孩linux培训某节课前考试试题及答案分享
查看>>
Rsync镜像同步工具的安装配置
查看>>
logstash日志系统搭建
查看>>
通过Dmidecode读取硬件信息。
查看>>
DPM2012系列之六:在Win7上安装DPM远程管理控制台
查看>>
SCOM 2012知识分享-19:配置数据库整理设置
查看>>
鸟哥?马哥?靠边站!今天猫哥带你玩千万PV级别运维架构实战
查看>>
欢迎加入Java私活外包QQ群
查看>>
Python风靡全宇宙,首要原因是它?
查看>>
Win7部署基础知识(8):使用WDS捕获与应用映像
查看>>
企业云桌面-14-将vCenter 6.5证书导入-受信任人-企业
查看>>
Python从菜鸟到高手(13):分片(Slicing)
查看>>