若要變動, 必需要在 Page的Pre_Init 事件,或更早進行變動,而寫法是
this.MasterPageFile="....master"; (請參考 sample code 的 default2.aspx)
若網頁有巢狀 masterpage,例如
MasterPageTop.master --> MasterPageChannel1.master --> default3.aspx
而您想 runtime 將 MasterPageTop.master 換成MasterPageTop2.master
可以寫成
this.Master.MasterPageFile = "~/MasterPageTop2.master";(請參考 sample code 的 default3.aspx)
若網頁有巢狀 masterpage,而且不太確定有多少層例如
MasterPageTop.master --> MasterPageChannel1.master --> MasterPageChannel1_1.master --> default.aspx
而您想 runtime 將 MasterPageTop.master 換成 MasterPageTop2.master,也就是說你的目標是 MasterPageChannel1.master ,想將它的 MasterPageFile 屬性改成 ~/MasterPageTop2.master
那麼您可以用遞迴向上一層層地找, 找到符合條件的 masterpage 時,再去修改它的 MasterPageFile 屬性, 例如可以寫成
Im master = getChannelMaster(); //遞迴地向上一層層找masterpage ,直到找到目標為止
if (master != null)
((MasterPage)master).MasterPageFile = "~/MasterPageTop2.master";
(請參考 sample code 的 default.aspx)
download sample code