簡體   English   中英

動態更改母版頁..從母版頁?

[英]dynamically change a Master Page .. FROM a Master Page?

我有以下代碼:

public abstract class BasePage : Page
{
    protected void Page_PreInit(object sender, EventArgs e)
    {
        if (IsPostBack)
            return;

        var section = ConfigurationManager.GetSection("UrlRewriter/PlainRules");

        if (section == null)
            SetMaster("~/App_Shared/Master/BaseRegular.Master");
        else
            SetMaster("~/App_Shared/Master/BaseRewritable.Master");
    }

    protected void SetMaster(string value)
    {
        MasterPage master = Master;

        while (master != null)
        {
            if (master is SharedMaster)
            {
                master.MasterPageFile = value;
                break;
            }

            master = master.Master;
        }
    }
}

它可以很好地動態更改我的母版頁,但是我希望能夠直接通過SharedMaster而不是我擁有的每個頁面來完成此操作。

如果將Page_PreInit放在母版頁上,則永遠不會觸發,那么我該如何完成呢?

如果將此功能放在BasePage ,然后從BasePage繼承每個頁面,則不必在每個頁面中重復代碼。 您似乎已經有了完善的工作代碼。

至於將邏輯放在母版頁中,這是不可能的-因為一旦母版頁與頁面關聯並且加載了控制樹,就無法更改母版頁。 pre_init不會為母版頁觸發,因為母版頁直到那時才加載,因此可以一次更改與該頁面關聯的母版頁。 然后加載母版頁,並創建一個復合控件樹,然后您將收到母版頁事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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