net2005使用微软的ajax控件库的时候怎么声明使用?
ScriptManager 这些控件在后台页面加载的时候是不是还要进行声明一下方法?都怎么去声明?
ScriptManager 这些控件在后台页面加载的时候是不是还要进行声明一下方法?都怎么去声明?
答案:SciptManager只需要在设计页面拉出来就行了阿, 其它都自动生成的, 只不过你在下边用ajax的地方,有个什么ajaxpart的控件, 要用它装起来,
你是指用法?还是控件额?
如果是控件的话 EnablePartialRendering:这个属性用来表示是否激活部分生成。部分生成用来只重新加载部分页面。如果为“真”的话,那么异步控件的常规回发就只显示发送给客户端的增量变化。
EnableScriptComponents:这个属性用来控制Ajax的哪一部分在默认情况下可以用在客户端上。它会确定用于用户界面组件、行为、行为绑定和XML脚本编写的Ajax脚本在默认情况下是否可以被下载到客户端上。如果为“伪”的话,你可以在ScriptReference元素里下载具体的组件。
ScriptReference:这个元素(它必须被包括在Scripts元素里)让你可以能够添加没有自动包括进来的脚本。脚本要用Path属性来指定,你还可以用Browser属性来为脚本指定一个浏览器。Ajax的确包括一些在默认情况下不会被发送给客户端的脚本;这些脚本可以用ScriptName脚本来添加。这样的脚本包括AtlasUIDragDrop、AtlasUIGlitz和AtlasUIMap。
ServiceReference:这个元素可以让你指定要被用在页面脚本里的Web服务。Type属性可以是任何合法的MIME类型。GenerateProxy属性让你能够临时中止为Scripts集合里列出的服务生成代理对象。
如果是 用法就是, 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" %> <!