2013-01-05 39 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

相關問題