41

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

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

控制以便使用

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

希望有人能给出答案。

4

3 回答 3

43

ScriptManager 控件向页面注册 Microsoft AJAX 库的脚本。这启用了客户端脚本支持功能,例如部分页面呈现和 Web 服务调用。

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

1. 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上查看更多信息

于 2013-01-05T07:08:28.873 回答
24

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

  • 首先,我们使用它们,因为在传统网页中,整个页面是在回发后加载的,发送到浏览器的 HTML 比它需要的大得多。
  • 其次,由于整个页面都被替换了,浏览器不得不关闭旧页面,然后绘制新页面。这会导致页面“闪烁”,从而导致缺乏吸引力的用户体验。 在此处输入图像描述

ScriptManager控件充当客户端页面和服务器之间的桥梁。由于它就像一座桥梁,如果需要添加任何其他 AJAX 控件,则必须使用此控件。它管理脚本资源(在客户端使用的 JavaScript 文件),如前所示处理部分页面更新,并处理与 Web 服务和 ASP.NET 应用程序服务 (如成员资格、角色、和简介。每当 UpdatePanel 中的某个控件导致向服务器回发时,只会刷新该 UpdatePanel 中的内容。

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

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

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

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

于 2014-01-02T09:56:50.140 回答
4

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

于 2013-01-05T06:50:54.210 回答