網站頁面上值得參考的部分
BlogEngine.Net的成功不僅在於它的架構設計,它的代碼實現細節也都是很經典的,每個結構分割的很清晰很自然,希望大家多多品位一下。在這篇文章裡我將給大家介紹一下BlogEngine.Net的Web實現上的幾個亮點,包括Web.config,Ajax的運用等。
Web.config中的幾個結點說明
讓我們看一下appSettings結點中的各個選項的含義,以便您對整個BlogEngine.Net的認識更加清晰。
BlogEngine.FileExtension:在這裡我們可以自定義Url請求的後綴名稱,默認是.aspx。您可以定義自己喜歡的擴展名,例如.extguo,那麼對於文章等生成的Url就成了類似http://HostName/CategoryName/PostTitle.extguo的形式。這個結點的使用在很多地方都可以見到,例如:
Post類中的RelativeLink
1public string RelativeLink
2{
3 get
4 {
5 string slug = Utils.RemoveIllegalCharacters(Slug) + BlogSettings.Instance.FileExtension;
6
7 if (BlogSettings.Instance.TimeStampPostLinks)
8 return Utils.RelativeWebRoot + "post/" + DateCreated.ToString("yyyy/MM/dd/", CultureInfo.InvariantCulture) + slug;
9
10 return Utils.RelativeWebRoot + "post/" + slug;
11 }
12}
BlogSettings.Instance.FileExtension就是讀取這個結點獲得的擴展名。
BlogEngine.VirtualPath:主要是為一些文章等的鏈接而服務的。我們可以使用虛擬目錄安裝我們的BlogEngine.Net,那麼我們只要設置一下這裡就可以得到和直接在根目錄下一樣的效果。我們需要注意一下Utils關於Url處理的部分,其中:
Utils中的RelativeWebRoot
1public static string RelativeWebRoot
2{
3 get
4 {
5 if (_RelativeWebRoot == null)
6 _RelativeWebRoot = VirtualPathUtility.ToAbsolute(ConfigurationManager.AppSettings["BlogEngine.VirtualPath"]);
7
8 return _RelativeWebRoot;
9 }
10}
就是獲得相對Web目錄。