[英]ScriptManager and ToolKitScriptManager in same web project
[英]How to programmatically replace ScriptManager with ToolkitScriptManager on MasterPage
我正在使用使用包含ScriptManager的母版頁的舊版Web應用程序。 我需要添加利用ToolScriptManager的內容頁面,因此,我試圖以編程方式找到舊控件並將其替換為新版本。 當我單步執行代碼時,刪除ScriptManager后,即使回發后,它仍然存在。 我嘗試了許多不同的方法,但在下面概述了總體思路。 在此先感謝您的任何建議。
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();
}
替換此標簽:
<asp:scriptmanager id="ScriptManagerOld" runat="server"></asp:scriptmanager>
與
<asp:ToolkitScriptManager id="ScriptManagerOld" runat="server"></asp:ToolkitScriptManager >
在您的母版頁中,應該有足夠的ToolKit管理器向后兼容。
如果要在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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.