2013-01-05 51 views
26

我有一个小的疑问,我不能谷歌答案,所以想我可以在这里找到答案。 为什么要为了增加脚本管理器控件实际上做了什么?

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

控制使用

<asp:UpdatePanel runat="server"> in out aspx page. 

希望有人能给出答案。

回答

28

ScriptManager控件在页面中注册Microsoft AJAX Library的脚本。这使客户端脚本支持功能(如部分页面呈现和Web服务调用)成为可能。

你必须使用一个页面上的ScriptManager控件使ASP.NET AJAX的以下功能:要在Microsoft AJAX库的

客户端脚本功能,以及任何自定义脚本发送到浏览器。

protected void Button1_Click(object sender, EventArgs e) 
{ 
    Page.ClientScript.RegisterStartupScript(
     this.GetType(),"myscript","alert('hello world!');"); 
} 

2.局部页面呈现,这使得在页面上的区域被独立地刷新没有回发。 ASP.NET AJAX UpdatePanel,UpdateProgress和Timer控件需要ScriptManager控件支持局部页面呈现。

3.用于Web服务的JavaScript代理类,它使您可以通过将Web服务作为强类型对象进行公开来使用客户端脚本来访问Web服务。

[WebMethod] 
public int Add(int a, int b) { return a + b; } 

function CallAdd() 
{ 
    // method will return immediately 
    // processing done asynchronously 
    WebService.Add(0,6, OnMethodSucceeded, OnMethodFailed); 
} 

4. JavaScript类访问ASP.NET验证和配置文件应用程序服务。

Sys.Services.AuthenticationService.login 
Sys.Services.AuthenticationService.logout 

<script type="text/javascript"> 
    function MyMethod(username, password) 
    { 
     Sys.Services.AuthenticationService.login(username, 
      password,false,null,null,null,null,"User Context"); 
    } 
</script> 

多见于http://msdn.microsoft.com/en-us/magazine/cc163354.aspx

+0

我可以在不使用** Microsoft AJAX Library **的情况下使用'ScriptManager' ***吗? – Kiquenet

2

ScriptManager控件为启用AJAX的ASP.NET网页管理客户端脚本。 因此,为了使用UpdatePanel或任何其他AJAX控件,我们必须在开始时使用ScriptManager控件。

13

除了上述的答案,我想补充几点背后使用ScriptManager控制的原因。您提到的控件UpdatePanelScriptManager用于ASP.NET AJAX启用网站。

  • 我们使用它们,首先,因为在传统的网页整个页面回发后装,发送到浏览器的HTML比它需要更大的 。
  • , 因为整个页面被替换,浏览器必须辞退旧人,然后绘制新的。这会导致页面“闪烁”,从而导致用户体验不佳。 enter image description here

ScriptManager控制作为客户端页面和服务器之间的桥梁。因为它就像一座桥梁,如果需要添加任何其他AJAX控件,则必须使用此控件。它管理 脚本资源(在客户端使用的JavaScript文件),负责部分页更新,如图所示 较早,并处理与您的网站的东西像 Web服务和ASP.NET 应用服务互动 如成员,角色和配置文件。只要UpdatePanel中的其中一个控件导致回发到 服务器,只有该UpdatePanel中的内容被刷新。

如果您分析会从服务器发送到浏览器(使用像 小提琴手或者Wireshark的网络分析工具)的数据,你会看到只有有限的数据量被发送到客户端。

你通常直接放置在ScriptManager控制在内容 页面,如果你认为你只的 页面少数需要Ajax功能。

如果你想在你的许多ASPX页面, 您可以将ScriptManager在母版页中使用Ajax功能,所以它在基于该主所有页面可用 。

你只能有一个ScriptManager 每页(即只有一个桥梁,如果碰巧有两座桥梁后,页面请求/响应可能会从哪里去了!?困惑:d),所以如果您将一个添加到主页面,则不能将另一个 添加到内容页面。要访问在内容页面的母版页中定义的 的ScriptManager控件,可以使用ScriptManagerProxy

相关问题