脚本管理器控制实际上做了什么?

时间:2013-01-05 06:28:24

标签: asp.net

我有一个小疑问,我无法谷歌答案,所以我想在这里找到答案。 我们为什么要添加

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

控制以便使用

  <asp:UpdatePanel runat="server"> in out aspx page.
希望有人能给出答案。

3 个答案:

答案 0 :(得分:34)

ScriptManager控件使用该页面注册Microsoft AJAX Library的脚本。这样可以启用客户端脚本支持功能,例如部分页面呈现和Web服务调用。

您必须在页面上使用ScriptManager控件才能启用ASP.NET AJAX的以下功能:

1。 Microsoft AJAX Library的客户端脚本功能,以及您要发送到浏览器的任何自定义脚本。

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. 用于访问ASP.NET身份验证和配置文件应用程序服务的JavaScript类。

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

了解详情

答案 1 :(得分:17)

除了上述答案,我想补充一些观点,说明使用ScriptManager控件背后的原因。您提及的控件UpdatePanelScriptManager用于支持ASP.NET AJAX的网站。

  • 我们使用它们,首先,因为在传统网页中,整个页面在回发后加载,发送到浏览器的HTML要大得多 比它需要的那样。
  • 第二 , 因为整个页面被替换,浏览器必须关闭旧页面,然后绘制新页面。这会导致页面“闪烁”,从而导致用户体验不佳。 enter image description here

ScriptManager控件用作客户端页面和服务器之间的桥接器。因为它就像一座桥,如果需要添加任何其他AJAX控件,您将使用此控件。它管理 脚本资源(客户端使用的JavaScript文件)负责部分页面更新,如图所示 更早,并处理与您的网站的交互 Web服务和ASP.NET 应用服务 例如成员资格,角色和个人资料。每当UpdatePanel中的一个控件导致回发时 服务器,只刷新该UpdatePanel中的内容。

如果您分析从服务器发送到浏览器的数据(使用类似的网络分析工具) Fiddler或Wireshark),您会看到只有有限数量的数据被发送到客户端。

  

您通常将ScriptManager控件直接放在内容中   如果您认为只需要少数几个就需要Ajax功能   页。

     

如果您要在许多ASPX页面中使用Ajax功能,   您可以将ScriptManager放在母版页中,以便它可用   在所有基于此母版的页面中。

你只能有一个ScriptManager 每页 (即只有一个桥,如果发生两个桥,那么页面请求/响应可能会混淆从哪里去!?:D) ,所以如果你添加一个到母版页,你不能添加另一个 到内容页面。为了访问ScriptManager控件 在内容页面的母版页中定义,您可以使用ScriptManagerProxy

答案 2 :(得分:2)

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