YQBlog - 基於Asp.Net MVC3 EF4.0技術的個人部落格系統。
示範地址 後台管理為註冊使用者權限 註冊登入即可 屏蔽了修改/刪除功能
【ps:如果你在資料庫附加或建立遇到問題,可以嘗試下 手動建立YQBlog資料庫】
開發環境: Visual Studio 2010(MVC3) + SQL2005
運行環境: .net framework 4.0 + SQL2005
網站架構:
MVC3+EF4.0+SQLSERVER2005+JSON+XML
網站結構:
許可權:.net membership
文章分類:category.js(json格式儲存)
文章內容:表 blog_article,blog_articledetail 以及 視圖 blog_varticle
配置資訊:general.config
部分:
可以通過右上方的菜單切換語言以及模板
部分知識點:
Json
Json的序列化以及還原序列化,主要是文章分類資訊部分。
Xml
xml的序列化以及還原序列化,配置資訊general.config 部分。
Ajax非同步:Jquery方式以及MVC方式
評論提交,評論顯示,文章推薦等
Jquery
程式中的js基於jquery編寫
用到的一些jquery外掛程式:
jquery.lazyload.js:圖片預先載入
jquery.pager.js:分頁
jquery.dragsort.js:拖曳排序
jquery.ui.datepicker.js:日期控制項
jquery.ad-gallery.js:相簿
jquery.uploadify-3.1.js:多檔案(圖片)上傳
kindeditor編輯器
kindeditor編輯器在mvc3中的應用,主要是檔案(圖片)上傳部分的改造
SyndicationFeed
文章以及評論rss
Ninject
實現Models層與Controllers之間的依賴注入
HtmlAgilityPack
HTML解析,url投稿功能處有用到
緩衝
頁面緩衝 OutputCache 以及對象緩衝 HttpRuntime.Cache
如果你提交了文章發現首頁沒有更新,那是因為預設設定了5分鐘的頁面緩衝。
webconfig中caching節點處,你可以在這裡修改設定。
<add name="CacheMain" duration="0" varyByParam="none" varyByCustom="RoleAndTheme"/>
部分功能設計:
自訂url
分類頁以及文章頁都可以自訂自己的url、
定義前:
http://www.yqhome.net/cate/11
定義後:
http://www.yqhome.net/mvc/
自訂視圖
MVC控制器中返回視圖的語句return view() 返回同名視圖,return view(“xxx”)則返回指定名稱的視圖,基於此,實現了控制器與視圖間的“依賴注入”。當我們一些頁面需要有特殊介面結構或者設計時可以用到。
全球化,多國語言
利用ASP.NET中內建的資源檔實現,目前已實現簡體,繁體,英文三個版本。
多國語言與固定url
利用mvc的area路由功能實現了不同語言的固定url.
英文版:http://www.yqhome.net/en-us/
繁體版:http://www.yqhome.net/zh-tw/
簡體版:http://www.yqhome.net/zh-cn/
http://www.yqhome.net/ 指向你在後台組態管理中指定的那個語言版本
url投稿:
假如我們在部落格園看到一篇不錯的文章想要轉載到自己的網站上,複製粘貼經常會多出或者漏掉一些節點對象。這個功能就是把你認為常用的網站文檔結構寫入到設定檔裡。接下來你只需要複製url就可以完成文章轉載,同時文章末尾會自動加上原作者以及出處資訊。
功能只是簡單的實現了class或者id的節點對象,暫不支援複雜的path尋找。
eg:
[{"Author":"#Header1_HeaderTitle","Content":"#cnblogs_post_body","Id":"1","Name":"cnblogs.com","Title":"#cb_post_title_url"}]
自訂地區[首頁]
你可以放入友情連結,網站公告,部落格調用等內容,首頁的內容總是差異很大,這裡通過“自訂地區[首頁]”來實現首頁內容的定製。你也可以把內容直接寫到視圖中,但通過自訂地區的功能則可以更靈活的對內容進行即時修改刪除。
原理:產生對應id的ViewData文章對象
自訂地區[全網]
跟“自訂地區[首頁]”實作類別似,但它是作用於全網的。這裡利用了MVC的全域過濾器。當你需要在網站部署廣告時,你或許可以利用這個功能。
模板切換
MVC可以靈活的更改視圖預設路徑。結合強大的Razor視圖引擎。可以很容易實現相同網站但風格,結構迥異的視圖頁面。這應該是MVC分層模型一個很贊的體現。
原理:指定網站當前視圖路徑(為空白表示MVC預設的views路徑)
相簿縮圖:
有時候一張圖片我們可能需要不同的顯示尺寸。這裡可以定義在相簿上傳時候產生0到多個不同尺寸的縮圖。
Eg:200x200,300x300
裝飾圖
有時候頁面只有文字會顯得很枯燥。我發現不少部落格都是圖文並茂的,有的也是作者隨機上傳的一些漂亮插圖。於是實現了這個功能。
操作:
1, 圖片放入到imgae下的decorate檔案夾內。以1001—1xxx命名。Default.jpg為圖片消極式載入前的預先載入圖片。
2, 視圖頁面中調用:@item. Decorate (隨機產生1001—1xxx中的一張,相鄰不會重複)
3, 如果內容管理的摘要中(summary)上傳了圖片,則會覆蓋隨機的裝飾圖。
感謝閱讀。