2010-08-17 65 views
0

我正在使用使用母版頁和嵌套母版頁的第三方asp.net應用程序。我的需求是爲每個頁面(.aspx)動態設置主頁面文件。默認情況下,應用程序爲每個頁面在強類型@Page指令中設置母版頁文件。我不想在每個頁面(超過50頁)上更改強類型指令,因爲我很懶,我想盡量減少與未來升級的衝突。覆蓋強類型@page主頁文件

我的解決方案是使用基母版類並覆蓋這樣的OnPreInt事件:

protected override void OnPreInit(EventArgs e) 
    { 
    this.MasterPageFile = "~/MasterPages/MyMaster.master"; 
    } 

一切完美的作品。我的問題是:這是一個壞主意,爲什麼?這似乎太容易成爲事實。

謝謝。

回答

0

這是一個非常好的主意。母版頁面的一半是你可以做到這一點。

關於他們的一件令人討厭的事情是,你不能讓他們開始引用一個不存在的文件(當你總是要在程序中決定主文件時會更清楚),所以如果我總是將它設置爲新的東西,我喜歡讓它從一個頁面開始,它只是說「虛擬母版頁,這將從編程方式移動」,所以很明顯,任何人都會跟蹤頁面使用的母版頁。

+0

謝謝喬恩。我其實已經看到過這個過程,並且從未考慮過它爲什麼或者它是什麼。這是一個好主意,似乎可以緩解Koistya提到的一些未來混亂。我的偏執正在減退。 – trevorc 2010-08-17 21:07:45

0

它使代碼/邏輯更復雜。例如,其他人可能會繼續在項目後工作,例如,可能會遇到問題,請儘快瞭解。恕我直言

+0

這很有道理。理想情況下,我想一起刪除強類型部分,但我不控制。這主要是爲了使主題更容易。 – trevorc 2010-08-17 20:52:13

+0

喬,除了易於閱讀,我沒有看到您的方法有任何問題。您也可以嘗試深入瞭解本機ASP.NET主題,但您的方法可能更簡單。 – 2010-08-17 20:56:20

+0

沒有遠離主題,我只是覺得嘗試和'適合'自定義主題和佈局到別人的標記(masterpage)是很麻煩的。我希望自由地使用我自己的類/ id的/ etc來設計佈局/主題,並在需要時進行更改。感謝您的投入Koistya。 – trevorc 2010-08-17 21:03:21

0

這應該沒有問題。 MasterPage不應用於控制集合,直到OnPreInit之後。唯一可能的問題,我有這個發現,也就是

1)你的開發者將不得不記住這個開關發生(技術債務)

2)你必須裝載每個頁面的時間都母版類要求(性能問題)