2014-05-12 49 views
0

我正在使用包含ScriptManager的MasterPages的舊版Web應用程序。我需要添加利用ToolScriptManager的內容頁面,因此我試圖以編程方式查找並用新版本替換舊控件。當我瀏覽代碼時,在刪除ScriptManager之後,它仍然存在,即使在回發之後。我嘗試了許多不同的方法,但我概述了下面的一般想法。在此先感謝您的任何建議。如何以編程方式將MasterManager替換爲MasterPage上的ToolkitScriptManager

MasterPage.master包含:

<asp:scriptmanager id="ScriptManagerOld" runat="server"></asp:scriptmanager> 

MasterPage.master.cs包含:

public ScriptManager MasterScriptManager 
{ 
    get{return ScriptManagerOld;} 
} 

ContentPage.aspx.cs包含:

protected void Page_Load(object sender, EventArgs e) 
{ 
    ReplaceScriptManager(); 
} 

private void ReplaceScriptManager() 
{ 
    try 
    { 
     Page page = this.Page; 

     //remove any instances of non-toolkit script manager 
     // attempt 1 
     if (Master.MasterScriptManager != null) 
     { 
      ScriptManager smngr = Master.MasterScriptManager; 
      page.Controls.Remove(smngr); 
      smngr.Dispose(); 
     } 
     // attempt 2 
     if (Master.MasterScriptManager != null) 
     { 
      ScriptManager smngr = Master.MasterScriptManager; 
      page.Controls.Remove(smngr); 
      page.Controls.Remove(smngr.Parent); 
      smngr.Dispose(); 
     } 
     // attempt 3 
     if (ScriptManager.GetCurrent(page) != null) 
     { 
      ScriptManager smngr = ScriptManager.GetCurrent(page); 
      page.Controls.Remove(smngr); 
      smngr.Dispose(); 
     } 
     // Add new ctrl 
     ToolkitScriptManager scriptMngr = new ToolkitScriptManager(); 
     scriptMngr.ID = "ToolkitScriptManager"; 
     scriptMngr.EnablePageMethods = true; 
     scriptMngr.CombineScripts = false; 
     // Exception on next line... cannot add two instances of scriptmanager 
     page.Page.Form.Controls.Add(scriptMngr); 
    } 
    catch (Exception ex) 
    { 
     throw (ex); 
    } 
} 
protected void Button1_Click(object sender, EventArgs e) 
{ 
    ReplaceScriptManager(); 
} 

回答

0

更換本文標籤:

<asp:scriptmanager id="ScriptManagerOld" runat="server"></asp:scriptmanager> 

<asp:ToolkitScriptManager id="ScriptManagerOld" runat="server"></asp:ToolkitScriptManager > 

在你的母版頁它應該足夠工具包管理器是向後兼容的。

如果您想修改MOSS中的控件,您需要在「PreInit」事件中執行此操作。

這是你如何添加ScriptManager的OnPreInit

protected override void OnPreInit(EventArgs e) 
    { 
     ScriptManager scriptManager = ScriptManager.GetCurrent(this); 
     if (scriptManager == null) 
     { 
      scriptManager = new ScriptManager(); 
      this.Page.Form.Controls.AddAt(0, scriptManager); 
     } 


     base.OnPreInit(e); 
    } 
+0

感謝Dalorzo。這肯定會工作... prblem是我需要以編程方式執行它,因爲在deplyment期間,不知何故老式ScripManager被注入(一個MOSS 2007應用程序),我無法弄清楚如何防止這一點,所以我們試圖做它以編程方式。 – Bengal

相關問題