在
ASP.NET AJAX中,由于一个
ASPX页面上只能有一个
ScriptManager控件,所以在有母版页的情况下,如果需要在
Master-Page和
Content-Page中需要引入不同的脚本时,这就需要在
Content-page中使用
ScriptManagerProxy,而不是
ScriptManager,
ScriptManager 和
ScriptManagerProxy 是两个非常相似的控件。
主要内容
1
.
ScriptManagerProxy控件概述
2
.简单示例
一.
ScriptManagerProxy控件概述
在
ASP.NET AJAX中,由于一个
ASPX页面上只能有一个
ScriptManager控件,所以在有
Master-Page的情况下,如果需要在
Master-Page和
Content-Page中需要引入不同的脚本时,就需要在
Content-page中使用
ScriptManagerProxy,而不是
ScriptManager,
ScriptManagerProxy和
ScriptManager是两个非常相似的控件。简单定义形式如下:
<
asp:ScriptManagerProxy
id
="ScriptManagerProxy1"
runat
="server"
>

<
Services
>

<
asp:ServiceReference
Path
="CalculWebService.asmx"
/>

</
Services
>

</
asp:ScriptManagerProxy
>
二.简单示例
下面看一个简单的使用
ScriptManagerProxy的例子。
1
.首先我们准备两个
WebService,在
Master-Page中我们输入一个字符串,而在
Content-Page中我们求两个数的和。
SimpleWebService.asmx
CalculWebService.asmx
2
.添加一个
Master-Page,在它上面添加一个
ScriptManager控件,并引入
WebService
SimpleWebService.asmx
,并添加相应的
HTML元素:
编写相应的
JS代码:
3
.添加一个
Content-Page,在它上面添加一个
ScriptManagerProxy
控件,并引入
WebService CalculWebService.asmx,并添加相应的
HTML元素:
编写相应的
JS代码:
[ScriptService]

public
class
SimpleWebService : System.Web.Services.WebService
{

public
SimpleWebService ()
{

//
Uncomment the following line if using designed components

//
InitializeComponent();
}

[WebMethod]

public
string
EchoString(String s)

{
return
"
Hello
"
+
s;
}

}
[ScriptService]

public
class
CalculWebService : System.Web.Services.WebService
{

public
CalculWebService ()
{

//
Uncomment the following line if using designed components

//
InitializeComponent();
}


[WebMethod]

public
int
Add(
int
a,
int
b)
{

return
a
+
b;
}
}
<
div
>

<
asp:ScriptManager
ID
="ScriptManager1"
runat
="server"
>

<
Services
>

<
asp:ServiceReference
Path
="SimpleWebService.asmx"
/>

</
Services
>

</
asp:ScriptManager
>

<
asp:contentplaceholder
id
="ContentPlaceHolder1"
runat
="server"
>

</
asp:contentplaceholder
>

<
h3
>
请输入名称:
</
h3
>

<
input
id
="inputName"
type
="text"
/>

<
input
id
="button"
type
="button"
value
="确 定"
onclick
="return OnbuttonGo_click()"
/>

</
div
>
<
script
type
="text/javascript"
language
="JavaScript"
>

function
OnbuttonGo_click()

{
requestSimpleService
=
SimpleWebService.EchoString(

document.getElementById('inputName').value,
//
params
OnRequestComplete
//
Complete event
);

return
false
;
}

function
OnRequestComplete(result)

{
alert(result);
}

</
script
>
<
div
>

<
asp:ScriptManagerProxy
id
="ScriptManagerProxy1"
runat
="server"
>

<
Services
>

<
asp:ServiceReference
Path
="CalculWebService.asmx"
/>

</
Services
>

</
asp:ScriptManagerProxy
>

<
h3
>
请输入两个数:
</
h3
>
<
input
id
="inputA"
type
="text"
style
="width: 110px"
/>
+

<
input
id
="inputB"
style
="width: 110px"
type
="text"
/>

<
input
id
="buttonEqual"
type
="button"
value
=" = "
onclick
="return OnbuttonEqual_click()"
/>

</
div
>
[ScriptService]
public
class
SimpleWebService : System.Web.Services.WebService
{
public
SimpleWebService ()
{
//
Uncomment the following line if using designed components 
//
InitializeComponent();
}

[WebMethod]
public
string
EchoString(String s)
{
return
"
Hello
"
+
s;
}

}CalculWebService.asmx
2
.添加一个
Master-Page,在它上面添加一个
ScriptManager控件,并引入
WebService
SimpleWebService.asmx
,并添加相应的
HTML元素:
编写相应的
JS代码:
3
.添加一个
Content-Page,在它上面添加一个
ScriptManagerProxy
控件,并引入
WebService CalculWebService.asmx,并添加相应的
HTML元素:
编写相应的
JS代码:
[ScriptService]

public
class
CalculWebService : System.Web.Services.WebService
{

public
CalculWebService ()
{

//
Uncomment the following line if using designed components

//
InitializeComponent();
}


[WebMethod]

public
int
Add(
int
a,
int
b)
{

return
a
+
b;
}
}
<
div
>

<
asp:ScriptManager
ID
="ScriptManager1"
runat
="server"
>

<
Services
>

<
asp:ServiceReference
Path
="SimpleWebService.asmx"
/>

</
Services
>

</
asp:ScriptManager
>

<
asp:contentplaceholder
id
="ContentPlaceHolder1"
runat
="server"
>

</
asp:contentplaceholder
>

<
h3
>
请输入名称:
</
h3
>

<
input
id
="inputName"
type
="text"
/>

<
input
id
="button"
type
="button"
value
="确 定"
onclick
="return OnbuttonGo_click()"
/>

</
div
>
<
script
type
="text/javascript"
language
="JavaScript"
>

function
OnbuttonGo_click()

{
requestSimpleService
=
SimpleWebService.EchoString(

document.getElementById('inputName').value,
//
params
OnRequestComplete
//
Complete event
);

return
false
;
}

function
OnRequestComplete(result)

{
alert(result);
}

</
script
>
<
div
>

<
asp:ScriptManagerProxy
id
="ScriptManagerProxy1"
runat
="server"
>

<
Services
>

<
asp:ServiceReference
Path
="CalculWebService.asmx"
/>

</
Services
>

</
asp:ScriptManagerProxy
>

<
h3
>
请输入两个数:
</
h3
>
<
input
id
="inputA"
type
="text"
style
="width: 110px"
/>
+

<
input
id
="inputB"
style
="width: 110px"
type
="text"
/>

<
input
id
="buttonEqual"
type
="button"
value
=" = "
onclick
="return OnbuttonEqual_click()"
/>

</
div
>
[ScriptService]
public
class
CalculWebService : System.Web.Services.WebService
{
public
CalculWebService ()
{
//
Uncomment the following line if using designed components 
//
InitializeComponent();
}


[WebMethod]
public
int
Add(
int
a,
int
b)
{
return
a
+
b;
}
}2
.添加一个
Master-Page,在它上面添加一个
ScriptManager控件,并引入
WebService
SimpleWebService.asmx
,并添加相应的
HTML元素:
编写相应的
JS代码:
3
.添加一个
Content-Page,在它上面添加一个
ScriptManagerProxy
控件,并引入
WebService CalculWebService.asmx,并添加相应的
HTML元素:
编写相应的
JS代码:
<
div
>

<
asp:ScriptManager
ID
="ScriptManager1"
runat
="server"
>

<
Services
>

<
asp:ServiceReference
Path
="SimpleWebService.asmx"
/>

</
Services
>

</
asp:ScriptManager
>

<
asp:contentplaceholder
id
="ContentPlaceHolder1"
runat
="server"
>

</
asp:contentplaceholder
>

<
h3
>
请输入名称:
</
h3
>

<
input
id
="inputName"
type
="text"
/>

<
input
id
="button"
type
="button"
value
="确 定"
onclick
="return OnbuttonGo_click()"
/>

</
div
>
<
script
type
="text/javascript"
language
="JavaScript"
>

function
OnbuttonGo_click()

{
requestSimpleService
=
SimpleWebService.EchoString(

document.getElementById('inputName').value,
//
params
OnRequestComplete
//
Complete event
);

return
false
;
}

function
OnRequestComplete(result)

{
alert(result);
}

</
script
>
<
div
>

<
asp:ScriptManagerProxy
id
="ScriptManagerProxy1"
runat
="server"
>

<
Services
>

<
asp:ServiceReference
Path
="CalculWebService.asmx"
/>

</
Services
>

</
asp:ScriptManagerProxy
>

<
h3
>
请输入两个数:
</
h3
>
<
input
id
="inputA"
type
="text"
style
="width: 110px"
/>
+

<
input
id
="inputB"
style
="width: 110px"
type
="text"
/>

<
input
id
="buttonEqual"
type
="button"
value
=" = "
onclick
="return OnbuttonEqual_click()"
/>

</
div
>
<
div
>

<
asp:ScriptManager
ID
="ScriptManager1"
runat
="server"
>

<
Services
>

<
asp:ServiceReference
Path
="SimpleWebService.asmx"
/>

</
Services
>

</
asp:ScriptManager