ScriptManager的用法
资料中如实是说: 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的用法的更多相关文章
- ScriptManager和UpdatePanel用法 (ajax)
ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果.其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖于ScriptManager存在, ...
- UpdatePanel的简单用法(转)
微软AJAX虽然是过时的玩意,但是得维护公司之前的老项目,转载看看. 局部更新是ajax技术的最基本,也是最重要的用法,今天大概把asp.net ajax中的局部更新控件 updatepanel的用法 ...
- ToolkitScriptManager vs. ScriptManager 关于“只能向页面中添加 ScriptManager 的一个实例”讨论
在使用ASP.NET设计AJAX功能网页时,需要首先声明ToolkitScriptManager或者ScriptManager控件,这些全局的脚本核心控制,然后才能使用众多的AJAX控件.如果没有创建 ...
- ScriptManager的使用方法 .(转)
从这一节开始我将和大家一起学习ASP.NET AJAX的服务器端控件的用法.首先,安装ASPAJAXExtSetup.msi,可以到微软官方网站上去下载.安装之后当你新建项目的时候会多出一个ASP.N ...
- EditText 基本用法
title: EditText 基本用法 tags: EditText,编辑框,输入框 --- EditText介绍: EditText 在开发中也是经常用到的控件,也是一个比较必要的组件,可以说它是 ...
- jquery插件的用法之cookie 插件
一.使用cookie 插件 插件官方网站下载地址:http://plugins.jquery.com/cookie/ cookie 插件的用法比较简单,直接粘贴下面代码示例: //生成一个cookie ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- [转载]C#中MessageBox.Show用法以及VB.NET中MsgBox用法
一.C#中MessageBox.Show用法 MessageBox.Show (String) 显示具有指定文本的消息框. 由 .NET Compact Framework 支持. MessageBo ...
- python enumerate 用法
A new built-in function, enumerate() , will make certain loops a bit clearer. enumerate(thing) , whe ...
随机推荐
- 【转】“/usr/bin/ld: cannot find -lz”
原文网址:http://stackoverflow.com/questions/3373995/usr-bin-ld-cannot-find-lz I am trying to compile And ...
- C# System.Attribute(验证类)
本文以一个项目中通用的验证类来举例说明如何使用自定义Attribute来扩展元数据. 在项目中,我们为了保证各个层次之间的松藕合,通常把在各个层次之间传递数据的封装在一个称为实体类的类中,比如Act ...
- 一行代码搞定Adapter
15年Google I/O大会发不了三个重要支持库 >Material design (Android Support Design) >百分比布局:Percent support lib ...
- Mesos编译步骤及部署注意事项(Ubuntu)
注意事项: 编译过程如果有错误提示少什么库,则相应的安装库即可在编译中出现 g++: internal compiler error: Killed (program cc1plus)的错误是因为内存 ...
- [洛谷1580]yyy loves Easter_Egg I
题目背景 Soha的出题效率着实让人大吃一惊.OI,数学,化学的题目都出好了,物理的题还没有一道.于是,Huntfire,absi2011,lanlan对soha进行轮番炸,准备炸到soha出来,不料 ...
- 集群搭建:主机宽带拨号上网,虚拟机使用桥接模式,该如何ping通外网
首先介绍一下看这篇文章需要的基础.需要了解虚拟机的 虚拟机的三种网络模式,有Linux基础知识,这些都是前提.首先介绍一下我的环境:主机:win7虚拟机:VMware Workstation 10虚拟 ...
- 如何获取、下载、安装fortran编译工具ifort
今天接触到ifort,不知如何下载安装.遂GOOGLE之,很多文章给出连接并表示说在网页上下载即可.可往往事与愿违,新的问题是:链接已经失效:获取ifort的办法又不同了: 于是,我探索到新的获取安装 ...
- zoj 3757 Alice and Bob and Cue Sports 模拟
题目链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3757 #include<cstdio> #incl ...
- 原来DataTable的Distinct竟如此简单![转]
本文转自:http://www.cnblogs.com/BlueFly/archive/2009/01/08/1372151.html 有时我们需要从DataTable中抽取Distinct数据,以前 ...
- Yii框架入门教程(博客教程、权威指南、类手册)
http://www.yiichina.com/ http://www.yiiframework.com/doc/blog/1.1/zh_cn/start.overviewhttp://www.yii ...