ScriptManager的简单用法

it2022-05-08  9

资料中如实是说:       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方法调用" ο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 = "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="触发错误按钮" ο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/iuices/archive/2011/04/21/2023412.html

相关资源:各显卡算力对照表!

最新回复(0)