現在好多網站都實現了在後台改模板的功能,今天我講一下在開發中我用到的幾種實現方法,和我對這幾種實現的一些親身體會。
一、將網頁模板存放到資料庫中。通常網站都是利用這種方法來實現的。這種方法是將HTML代碼儲存到資料庫中,當使用者訪問頁面的時候,程式從資料庫中讀取代碼,然後直接輸出。為了達到動態網頁的效果,我們可以在HTML中加入自訂的“函數”,在程式的後台利用Regex尋找出你定義的“函數”(也就是特定的一個字串)和函數參數,然後根據這個“函數”的名字調用相應的.NET函數,用返回結果(執行的函數要返回HTML代碼)替換模板中的“函數”,然後傳送給終端使用者。當然,為了避免頻繁的調用資料庫和提升網站的訪問速度,我們利用這種方法來實現的模板須要將其存放到緩衝當中。這種方法在實際應用的時候要寫好多“函數”,比較麻煩。
二、不同的前台頁面(.aspx)使用相同的背景程式(.cs檔案)。在.NET2005中,當程式被發布以後,程式會自動將.cs檔案轉換成相應的程式集,我們添加模板的時候,只要將.aspx檔案中必要的東西放入(複製)到一個建立的.aspx檔案中,然後隨意更改這個檔案,儲存後可以直接存取,這樣程式就相當於多了一個頁面,從而實現了自訂模板的功能。我們寫程式的時候,使用者在添加模板的時候只要添加一個.aspx檔案就可以了,需要注意的是使用者必須把原程式(原始.aspx檔案)中引用的程式集複製到新模板中,最好是整個檔案的內容複寫,不同類別的模板有不同的程式集,引用出錯就會發生錯誤。利用這種辦法實現的模板,在模板中的asp.net控制項仍然起作用,但是當管理員切換模板的時候,相應網頁的實際URL會跟著發生改變。為瞭解決這個問題,我們可以改一下URLRewriter,讓URL重寫規則也跟著變,從而使URL保持不變。
三、通過XML+XSLT實現。我們都知道XML資料可以通過XSLT轉換成網頁的形式,那麼我們在程式中的資料都存放/轉換成XML,然後給不同的頁面定義不同的XSL,來轉換和顯示網頁。程式切換模板的時候,只要為頁面切換一個XSL就可以了。缺點就是管理員懂得XSLT的很少,改起來可能不大容易。