一个什么都学的老程序员  
C#和PHP学习历程

一.ScriptManagerProxy控件概述

由于ScriptManager是整个页面的脚本控制器,所以一个ASPX页面上只能有一个ScriptManager控件。如果在项目在存在了母版页,并在母版页中已经应用了ScriptManager,而在内容页中又需要引入其他的WEB服务的话,该如何处理?
    这个时候ScriptManagerProxy就派上用场了。我们在内容页中可以用ScriptManagerProxy代理ScriptManagerProxy的功能,它的用法与ScriptManager完全相似:

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

    
<Services>

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

     
</Services>

</asp:ScriptManagerProxy>
在它下面可以添加的子标签有:Services,Scripts,AuthenticationService,ProfileService
或许有人说可以把服务和脚本都在母版页里面加载更省事,但是有时不同的内容页需要不同的脚本,这样做会降低效率。
2.用实例演示ScriptManagerProxy的应用
(1)首先,在网站下面添加一个母版页,命名为:MasterPage.master,添加如下控件:

(2)在根目录下添加js文件,JScript1.js,内容如下:
// JScript 文件
//求和】
function GetSum()
{
    var num1=document.getElementById("Text1").value;
    var num2=document.getElementById("Text2").value;
    sum(num1,num2);
}
function sum(m,n)
{
    alert(eval(m)+eval(n));
}
(3)现在在母版页中写入加载这个js文件的语句
<asp:ScriptManager ID="ScriptManager1" runat="server">
        <Scripts>
        <asp:ScriptReference Path="JScript1.js" />
        </Scripts>
        </asp:ScriptManager>
(4)新建一个WEB页面,命名为Default2.aspx,选择其母版页MasterPage.master;
添加控件后效果如下:

(5)新建JS文件JScript2.js,代码如下:
// JScript 文件
//求积
function GetProduct()
{
    var num1=document.getElementById("Txt1").value;
    var num2=document.getElementById("Txt2").value;
    product(num1,num2);
}
function product(a,b)
{
    alert(eval(a)*eval(b));
}
现在在Default.aspx2中引用这个文件就OK了,哈哈ScriptManagerProxy派上用场了,代码如下:
<asp:ScriptManagerProxy id="ScriptManagerProxy" runat="server">
    <Scripts>
        <asp:ScriptReference Path="JScript2.js" />
        </Scripts>
    </asp:ScriptManagerProxy>
OK了,运行测试一下吧!



posted on 2007-10-07 23:23  剑落飘香  阅读(495)  评论(0编辑  收藏  举报