本系列目錄:ASP.NET MVC4入門到精通系列目錄彙總
html
前面的章節,說了ASP.NET MVC項目中經常使用的一些技術和知識點,更多的是理論上面的東西,接下來,我將經過一個簡單的OA項目來應用咱們以前涉及到的一些技術,爲了兼顧初學者,因此我儘可能把操做步驟說得足夠詳細。(原本想用VS2015來演示MVC5開發的,無奈家裏的筆記本是11年2月份的老爺機了,一直不曾捨得換,由於配置的緣故,筆記本不堪負重,難以安裝最新版本的開發工具,只裝了VS2012,固然,還有一個緣由就是如今公司也是使用VS2012和MVC4。)spring
開發環境:win7 64bit、VS2012、sqlserver2008sql
使用框架:asp.net mvc4 、EF5、spring.net 、easyUI1.4x數據庫
1、新建空白解決方案架構
2、新建解決方案文件夾mvc
新建解決方案文件夾能夠分類打包一些項目,讓整個項目變得更清晰。框架
Common:基礎架構、包含一些通用的組件,以及IOC容器asp.net
Repository:數據倉儲工具
Service:服務層(業務邏輯和API接口)sqlserver
UI:界面(MVC項目)
三、新建MVC項目
右鍵點擊UI文件夾,新建項目
爲了把控制器單獨做爲一個項目,這裏咱們刪除Controller文件夾
四、新建一個類庫,來做爲UI的業務邏輯層,仍是建在UI目錄下面
如今我忽然想改項目的名稱,把OA改成Web,這個時候,先在解決方案中直接重命名項目名稱,而後移除此項目,再去解決方案目錄下面找到該項目對應的文件夾OA,將文件夾名稱改成OA,最後從新添加項目的引用,就能夠了,OA.Logic改成Web.Logic也採用一樣的方式。
五、依次創建好其它項目,除了Web項目外,其它的均爲類庫項目,最終以下圖:
Web.Logic就至關於獨立的Controller項目
建立數據庫,請先下載sql腳本(下載地址:http://pan.baidu.com/s/1OLxQA),而後在sqlserver上面運行。此sql腳本是從網上下載的,是一個OA的數據庫。
6、在Model項目中,新建實體數據模型
7、修改配置文件
因爲Web項目中會用到全局的配置,因此把Model項目中的App.config中的配置複製到Web項目中的Web.config中
八、添加項目之間的引用
Model
IDAL-->Model
DAL-->IDAL、Model
IBLL-->Model
BLL-->IBLL、IDAL、Model、DI
Web.Logic-->IBLL、Model、DI
Web-->Web.Logic、Model
右鍵單擊解決方案——項目依賴項,能夠查看項目之間的引用
9、新建控制器
既然Web.Logic類庫充當了獨立的控制器層,那麼先要添加System.Web.Mvc和System.Web的引用,從擴展裏面選擇的dll,是在C盤mvc的安裝目錄下面的dll,固然,你也能夠點擊瀏覽,指定你須要的dll,可是要注意版本。
咱們來新建一個Home控制器類,根據約定大於配置原則,咱們命名爲HomeController
代碼以下:
using System.Web; using System.Web.Mvc; namespace OA.Logic { public class HomeController:Controller { public ActionResult Index() { return View(); } } }
10、在Web-項目中新建視圖
在Views中新建一個和控制器同名的文件夾Home,而後添加一個Index視圖
Index視圖代碼:
@{ ViewBag.Title = "Index"; } <h2>Hello world</h2>
將Web項目設置爲啓動項,Build解決方案,而後咱們運行看下效果
可能有些朋友會感受奇怪,我Web項目中都沒有任何控制器類,爲何我一塊兒動項目就能自動跳轉到咱們剛纔建立的Index視圖呢?
首先,咱們Web項目中的默認路由是 defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
而當Web啓動時,路由引擎會自動到Web項目中的bin目錄下面查找全部dll中繼承Controller的類,而後一一進行路由匹配。
因爲Web項目引用了OA.Logic項目,因此bin目錄下面存在OA.Logic.dll。
爲了優化路由匹配,咱們還能夠指定命名空間,這樣的話,就只會在指定的命名空間下面去匹配了,不須要遍歷bin目錄下面全部dll下面的因此類一個一個去匹配。
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new string[1] { "Web.Logic" } //指定Controller所在命名空間 ); }
一會兒就零點了,先洗洗睡了,最近深圳真冷,555~ 未完,待續....