通過Asp.Net MVC的區域功能實現將多個MVC項目部署到一個站點


引子

本文將主要演示怎么將多個Asp.Net MVC項目部署到一個IIS站點中的例子,主要使用的是Asp.Net MVC提供的區域的功能。

Asp.Net MVC提供了區域的功能,可以很方便的為大型的網站划分區域。可以讓我們的項目不至於太復雜而導致管理混亂,有了區域后,每個模塊的頁面都放入相應的區域 內進行管理很方便。而隨着項目的復雜,每個開發人員開發的模塊呢也可能是一個完整的解決方案,而他要開發的UI項目呢只是主站點項目的一個區域,而如果把 所有的UI項目放到一個UI項目,在團隊開發時就不很方便了,而我們想達到的效果是:每個模塊都對應一個UI項目【這里指Asp.Net MVC項目】,最后部署的時候將子項目都配置成區域,而總的項目就是一個站點。

一、項目創建

首先創建一個主Asp.Net MVC項目,然后創建一個子Asp。Net MVC項目。項目的結構如下:

注:

1、AreasDemo【子項目,作為主項目的一個Area】、MvcAppMain【主Web項目】都是普通的Asp.Net MVC3項目

2、MVCControllers是一個類庫項目

3、補充:Asp.Net MVC的控制器:Controller是可以放到站點的任何DLL中的,它在搜索控制器時,會搜索站點下的所有DLL,當類符合條件:不是靜態類,類名以 Controller結尾,實現了Controller基類【其實最主要是IController接口】的條件時它就會被識別為控制器。所以我們可以把控 制器放到任何的其他項目中,只有將此控制器所在的DLL拷貝到、主站點的Bin目錄或者對應的DLL目錄就可以了。當然也可以放在默認的Web項目中的 Controller文件夾下。

二、添加測試的Controller和Action

在子區域Web項目AreasDemo項目中添加一個Action,然后添加一個對應的視圖

在主Web項目MvcAppMain中添加一個HomeController和相應的Index.cshtml視圖文件。

在MVCAppMain項目中添加一個Admin區域,做測試使用。

項目最終截圖為:

我們看到,在主站點里添加了一個Admin區域后,默認創建了一個Areas文件夾,而且內部就是存放區域項目的頁面。

三、在子項目中添加Areas Registration類

打開AreasDemo項目,添加一個AreasDemoRegistration類文件,其代碼如下:

復制代碼
public class AreasDemoRegistration : AreaRegistration//在主站點注冊區域
{
public override string AreaName
{
get { return "AreasDemo"; }
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"AreasDemo_default",//路由名字,必須唯一
"AreasDemo/{controller}/{action}/{id}",//路由規則
new { action = "Index", id = UrlParameter.Optional }//默認值
);
}
}
復制代碼

其實就是一個普通的類,它實現了AreaRegistration基類。然后我們注冊區域路由就會在Global.asax的Application_Start事件方法中去執行注冊到主站點的路由表中。具體

可以參考Global.asax中紅色代碼部分:

復制代碼
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();//注冊所有區域
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
復制代碼

至此我們基本的測試的基礎工作都做好了,下面就是到了部署階段了。

四、部署我們的項目

首先,我們需要將子項目的引用到主項目中。然后我們發布主項目到一個磁盤文件夾。然后,將子項目AreasDemo的Views文件夾拷貝到主項目 發布后的文件夾對應的Areas\AreasDemo文件夾下。其中AreasDemo是areaname,此文件夾需要我們自己手動創建。然后,觀察發 布后的bin目錄下有沒有AreasDemo.dll動態鏈接庫【Web子項目】。

然后,我們將此文件夾發布為IIS里的一個網站。最終演示效果為:

注:這是默認主Web的inde頁面

注:這是主站點里添加的Admin區域

注:這是子項目action請求返回的頁面

總結

我們是通過Asp.Net MVC的區域的功能實現了將多個Asp.Net MVC的項目部署的了一個IIS的站點中,這樣就可以讓我們多個人一塊開發的不用局限在一個Web項目中了。可能文章說的不夠詳盡,請參下載我本文中提到的源碼和部署的站點文件夾,做為參考。


免責聲明!

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



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