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

Sra*_*mar 33 asp.net

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

 <asp:ScriptManager ID="ScriptManager1" runat="server">
 </asp:ScriptManager>
Run Code Online (Sandbox Code Playgroud)

控制才能使用

  <asp:UpdatePanel runat="server"> in out aspx page.
Run Code Online (Sandbox Code Playgroud)

希望有人能给出答案.

phn*_*kha 36

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!');");
}
Run Code Online (Sandbox Code Playgroud)

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);
}
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请访问http://msdn.microsoft.com/en-us/magazine/cc163354.aspx

  • 我可以不使用** Microsoft AJAX库**来不使用ScriptManager吗? (2认同)

Jiv*_*van 17

除了上面的答案,我想为使用ScriptManager控件背后的原因添加一些要点.您提到UpdatePanelScriptManager用于ASP.NET AJAX Enabled站点的控件.

  • 我们首先使用它们,因为在传统网页中,整个页面在回发后加载,发送到浏览器的HTML要比它需要的大得多.
  • 其次,因为整个页面被替换,浏览器必须解除旧的页面,然后绘制新的页面.这会导致页面"闪烁",从而导致用户体验不佳. 在此输入图像描述

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

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

ScriptManager如果您认为仅在少数页面上需要Ajax功能,则通常将控件直接放在内容页面中.

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

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


Sob*_*han 5

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