和第二天一起出来了,不是真正意义上的天了,算次吧
继续学习中...............................
ScriptManager对WebService的应用:
先新建一个WebService用于测试WebServiceSample.asmx,
[ScriptService]
public class WebServiceSample : System.Web.Services.WebService {
public WebServiceSample()
{
}
[WebMethod]
public string EchoString(String s)
{
return "Hello " + s;
}
}
千万不要忘了ScriptService,更不要忘了using System.Web.Script.Services;ScriptService的名称空间,TerryLee的文章中没有写using,可能是认为太简单了吧,害得我搜到另一篇文章才知道滴:)
废话少说,看一下完整代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<script type="text/javascript" language="JavaScript">
function OnbuttonGo_click()
{
requestSimpleService = WebServiceSample.EchoString(
document.getElementById('inputName').value, //params
OnRequestComplete //Complete event
);
return false;
}
function OnRequestComplete(result)
{
alert(result);
}
</script>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="WebServiceSample.asmx"/>
</Services>
</asp:ScriptManager>
<div>
<input type="text" id="inputName" size=20/>
<input id="button" type="button" value="调 用" onclick="return OnbuttonGo_click()" /></div>
</form>
</body>
</html>
一个客户端的事件,调用服务器端的方法,返回结果到客户端,这就是Ajax,需要注意的是WebServiceSample.EchoString(document.getElementById('inputName').value, OnRequestComplete);中的OnRequestComplete,表示的是调用完成后执行的方法,可不是EchoString需要的参数哟,当然OnRequestComplete(result)中,你不用result肯定没问题。
噢,对,文章中还提示了可以用
ServiceReference sr = new ServiceReference();
sr.Path = "WebServiceSample.asmx";
ScriptManager1.Services.Add(sr);
代替直接在页面设置ScriptManager的Services属性。
至于ScriptManagerProxy,实在是和ScriptManager太像了,只不过,由于一个ASPX页面上只能有一个ScriptManager控件,所以在有母版页的情况下,如果需要在Master-Page和Content-Page中需要引入不同的脚本时,这就需要在Content-page中使用ScriptManagerProxy,而不是ScriptManager。
继续学习中...............................
ScriptManager对WebService的应用:
先新建一个WebService用于测试WebServiceSample.asmx,
[ScriptService]
public class WebServiceSample : System.Web.Services.WebService {
public WebServiceSample()
{
}
[WebMethod]
public string EchoString(String s)
{
return "Hello " + s;
}
}
千万不要忘了ScriptService,更不要忘了using System.Web.Script.Services;ScriptService的名称空间,TerryLee的文章中没有写using,可能是认为太简单了吧,害得我搜到另一篇文章才知道滴:)
废话少说,看一下完整代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default3.aspx.cs" Inherits="Default3" %>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<script type="text/javascript" language="JavaScript">
function OnbuttonGo_click()
{
requestSimpleService = WebServiceSample.EchoString(
document.getElementById('inputName').value, //params
OnRequestComplete //Complete event
);
return false;
}
function OnRequestComplete(result)
{
alert(result);
}
</script>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="WebServiceSample.asmx"/>
</Services>
</asp:ScriptManager>
<div>
<input type="text" id="inputName" size=20/>
<input id="button" type="button" value="调 用" onclick="return OnbuttonGo_click()" /></div>
</form>
</body>
</html>
一个客户端的事件,调用服务器端的方法,返回结果到客户端,这就是Ajax,需要注意的是WebServiceSample.EchoString(document.getElementById('inputName').value, OnRequestComplete);中的OnRequestComplete,表示的是调用完成后执行的方法,可不是EchoString需要的参数哟,当然OnRequestComplete(result)中,你不用result肯定没问题。
噢,对,文章中还提示了可以用
ServiceReference sr = new ServiceReference();
sr.Path = "WebServiceSample.asmx";
ScriptManager1.Services.Add(sr);
代替直接在页面设置ScriptManager的Services属性。
至于ScriptManagerProxy,实在是和ScriptManager太像了,只不过,由于一个ASPX页面上只能有一个ScriptManager控件,所以在有母版页的情况下,如果需要在Master-Page和Content-Page中需要引入不同的脚本时,这就需要在Content-page中使用ScriptManagerProxy,而不是ScriptManager。