请选择 进入手机版 | 继续访问电脑版
查看: 534|回复: 0

[.NET源码] ASP.NET MVC将系统依不同模组建立个别的MVC专案(II)

3万

主题

3万

帖子

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
100197
发表于 2015-11-19 18:24:06

上一篇:ASP.NET MVC将系统依不同模组建立个别的MVC专案

最近跟保哥讨论如何将ASP.NET MVC依不同的模组切分,他有提到有个专案叫「Tailspin Travel」,可以将Area Build成不同的DLL,在CodePlex上已找不到了!

一开始作者假设要建立一个系统,包含Marketing, Sales, Billing, Inventory, Warehouse。

所以先建立主框架应用程序,选取MVC 4 Basic专案,专案名称「ProductDemo」。

然后在共用的_Layout.cshtml中加入各模组的Link, 模组名称跟Area相同,如下,

  1. <div id="nav">
  2. @Html.ActionLink("Home","Index","Home", new {Area=""}, null) |
  3. @Html.ActionLink("Marketing","Index","Marketing", new {Area="Marketing"}, null) |
  4. @Html.ActionLink("Billing","Index","Billing", new {Area="Billing"}, null) |
  5. @Html.ActionLink("Inventory","Index","Inventory", new {Area="Inventory"}, null) |
  6. @Html.ActionLink("Warehouse","Index","Warehouse", new {Area="Warehouse"}, null)
  7. </div>
复制代码

为了怕各Area中有相同的Controller,可在ProductDemo’s RouteConfig.cs之中,加入namespace的设定,如下,

  1. routes.MapRoute(
  2. name: "Default",
  3. url: "{controller}/{action}/{id}",
  4. defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
  5. namespaces: new string[] { "ProductDemo.Controllers" }
  6. );
复制代码

再来建立各模组的Area,作者先建立Marketing Area,将MarketingAreaRegistration.cs备份起来,然后把Marketing Area删除。

然后再建立一个模组的MVC 4 Basic专案,专案名称为「Marketing」,存放位置为ProductDemo的Areas目录之下。www.it165.net

再把 App_Data, App_Start, Content, Viewers\Shared等目录及global.asax删除掉!

再把之前备份的MarketingAreaRegistration.cs Copy到Marketing的根目录之下,并改Namespace为主程序的Namespace这个Demo为ProductDemo。

然后在RegisterArea Method中也多加入namespace设定,如下,

  1. public override void RegisterArea(AreaRegistrationContext context)
  2. {
  3. context.MapRoute(
  4. "Marketing_default",
  5. "Marketing/{controller}/{action}/{id}",
  6. new { controller = "Marketing", action = "Index", id = UrlParameter.Optional },
  7. new string[] { "Marketing.Controllers" }
  8. );
  9. }
复制代码

然后设定模组专案的Output路径为 ..\..\bin\ ,就会把DLL Build到主程式的Bin目录之中。

然后在模组专案中,建立Controller及View建置后,就可以透过主程式执行,然后执行到各模组专案了。




回复

使用道具 举报