適合人羣:瞭解MVC項目的程序員html
開發工具:vs2012程序員
開發語言:C#web
小項目或功能比較單一的項目能夠直接新建一個MVC基本項目類型便可,但隨着需求不斷迭代,項目的功能模塊愈來愈多,甚至有些模塊能夠獨立開發,這時就要考慮主項目的M/V/C三大部分分離,便於不一樣角色的工程師專一本身的部分開發、更新及發佈部署。瀏覽器
下面從主項目CSDN開始,逐步實現M/V/C三大部分的分離:app
1、新建一個MVC4主項目,項目名稱是CSDN,如圖示:工具
假設主項目CSDN是官網站點,即用戶輸入官網域名直接訪問打開的站點,默認打開的頁面是首頁(http://www.csdn.net/home/index)。新建Home控制器、Index視圖,如圖示:開發工具
打開app_start/routeconfig.cs文件,確認站點默認是不是/home/index優化
Index視圖頁面代碼以下:網站
右擊主項目,調試啓動運行:.net
瀏覽器打開的頁面以下:
到此,主項目建立完成,併成功運行。
2、分離控制器,新建一個類庫項目,命名CSDN.Controllers.Main
重命名默認建立的類文件class1.cs爲HomeController.cs,打開文件留意引用的命名空間,與主項目的Home控制器文件對比
因此在剛建立的類庫項目CSDN.Controllers.Main中需引用缺乏的命名空間system.web
這些DLL引用的路徑,請參考主項目對應的文件,右擊-屬性查看
按以上方法,逐個引用完成後,如圖示:
在主項目CSDN中引用已分離出來的控制器類庫CSDN.Controllers.Main
修改routeconfig.cs文件代碼以下:
刪除主項目原來的controller文件夾及其下的控制器文件,
刪除後,編譯再次運行主項目CSDN,可見和以前打開的首頁面是同樣的,說明控制器分離成功。
3、分離數據模型Model,這個比較簡單了,同上新建一個類庫項目CSDN.Models.Main,class1.cs改名爲MainModel.cs,如圖示:
在分離的控制器項目中引入Model項目,並修改homecontroller中的index方法代碼以下:
在view Index.cshtml頁面中顯示數據模型的信息,先在主項目CSDN中引入CSDN.Models.Main,並修改view文件夾下的webconfig文件,引入數據模型命名空間:
運行主項目CSDN後,瀏覽器頁面顯示以下:
4、分離視圖View(重點),到此已經完成了控制器、數據模型的分離,若是隻有一個官網模塊,彷佛不必分離視圖,默認在主項目CSDN中也挺好。可是,若是功能模塊增長:後臺管理Admin、博客Blog、商城Shop等等,則有必要分離各部分的視圖在獨立的MVC項目中。
之後臺管理Admin舉例,先在主項目CSDN中添加Areas/Admin,如圖:
由於已經分離了controller、model,因此刪除Areas/Admin下默認建立的控制器、數據模型文件夾:
如今有必要新建解決方案文件夾Controllers、Models、Views,把相應的獨立項目歸類到對應的文件夾下:
在Views文件夾下新建一個MVC4基本項目CSDN.Admin,這個就是後臺管理項目,同理可刪除其下的控制器、數據模型文件夾:
將主項目中的Areas/Admin/AdminAreaRegistration.cs文件剪切到上面的CSDN.Admin項目根目錄下,
按以上分離控制器的方法,分離後臺管理模塊的控制器,在Controllers文件夾下新建類庫項目CSDN.Controllers.Admin
在CSDN.Admin項目中新建視圖文件Index.cshtml
該項目中需引用控制器項目CSDN.Controllers.Admin,並修改app_start/routeconfig文件代碼以下:
直接運行項目CSDN.Admin,頁面顯示以下:
但這並非咱們最終目的,咱們要的是運行主項目CSDN,瀏覽器輸入http://localhost/admin/home/index時,也能夠看到如上頁面效果。此時還需修改CSDN.Admin/AdminAreaRegistration.cs文件代碼
將CSDN.Admin項目中的View文件夾下的視圖文件home整個文件夾,複製到主項目CSDN/Areas/Admin/Views下:
在主項目CSDN中引用項目CSDN.Admin,而後運行主項目,默認仍是打開以前的官網頁面,此時接着在瀏覽器URL輸入/admin/home(或/admin/home/index)回車,便可看到後臺管理頁面。
源代碼下載地址:http://download.csdn.net/detail/cdblh/9840202
此文檔下載地址:http://download.csdn.net/detail/cdblh/9840201
還能夠繼續優化,好比:
1. 手動複製視圖文件到主項目中,能夠配置生成事件自動完成。
2. 主項目發佈後,Areas下的模塊能夠配置獨立的二級域名訪問http://admin.csdn.net,代替http://www.csdn.net/admin
3. 還能夠