搭建項目框架


前面的章節,說了ASP.NET MVC項目中常用的一些技術和知識點,更多的是理論上面的東西,接下來,我將通過一個簡單的OA項目來應用我們之前涉及到的一些技術,為了兼顧初學者,所以我盡量把操作步驟說得足夠詳細。(本來想用VS2015來演示MVC5開發的,無奈家里的筆記本是11年2月份的老爺機了,一直未曾舍得換,因為配置的緣故,筆記本不堪負重,難以安裝最新版本的開發工具,只裝了VS2012,當然,還有一個原因就是現在公司也是使用VS2012和MVC4。)

開發環境:win7 64bit、VS2012、sqlserver2008

使用框架:asp.net mvc4 、EF5、spring.net 、easyUI1.4x

1、新建空白解決方案

2、新建解決方案文件夾

新建解決方案文件夾可以分類打包一些項目,讓整個項目變得更清晰。

 

Common:基礎架構、包含一些通用的組件,以及IOC容器

Repository:數據倉儲

Service:服務層(業務邏輯和API接口)

UI:界面(MVC項目)

3、新建MVC項目

右鍵點擊UI文件夾,新建項目

 

 

為了把控制器單獨作為一個項目,這里我們刪除Controller文件夾

 

4、新建一個類庫,來作為UI的業務邏輯層,還是建在UI目錄下面

 

現在我突然想改項目的名稱,把OA改為Web,這個時候,先在解決方案中直接重命名項目名稱,然后移除此項目,再去解決方案目錄下面找到該項目對應的文件夾OA,將文件夾名稱改為OA,最后重新添加項目的引用,就可以了,OA.Logic改為Web.Logic也采用同樣的方式。

5、依次建立好其它項目,除了Web項目外,其它的均為類庫項目,最終如下圖:

 

Web.Logic就相當於獨立的Controller項目

創建數據庫,請先下載sql腳本(下載地址:http://pan.baidu.com/s/1OLxQA),然后在sqlserver上面運行。此sql腳本是從網上下載的,是一個OA的數據庫。

6、在Model項目中,新建實體數據模型

 

 

7、修改配置文件

由於Web項目中會用到全局的配置,所以把Model項目中的App.config中的配置復制到Web項目中的Web.config中

 

8、添加項目之間的引用

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所在命名空間
            );
        }
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM