簡體   English   中英

如何以編程方式在MasterPage上用ToolkitScriptManager替換ScriptManager

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM