Asp.Net MVC3 简单入门第一季(五) 通过Asp.Net MVC的区域功能实现将多个MVC项目部署到一个站点

简介: 引子 本文将主要演示怎么将多个Asp.Net MVC项目部署到一个IIS站点中的例子,主要使用的是Asp.Net MVC提供的区域的功能。 Asp.Net 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项目中了。可能文章说的不够详尽,请参下载我本文中提到的源码和部署的站点文件夹,做为参考。

赶紧体验一下吧....

下载:关于此文中的源码,以及部署Web站点的文件夹

转载请注明出处,谢谢。

Asp.Net MVC3 简单入门第一季 【索引贴】

目录
相关文章
|
4月前
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
110 5
|
4月前
|
开发框架 缓存 .NET
GraphQL 与 ASP.NET Core 集成:从入门到精通
本文详细介绍了如何在ASP.NET Core中集成GraphQL,包括安装必要的NuGet包、创建GraphQL Schema、配置GraphQL服务等步骤。同时,文章还探讨了常见问题及其解决方法,如处理复杂查询、错误处理、性能优化和实现认证授权等,旨在帮助开发者构建灵活且高效的API。
91 3
|
8月前
|
开发框架 JSON .NET
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
ASP.NET Core 标识(Identity)框架系列(三):在 ASP.NET Core Web API 项目中使用标识(Identity)框架进行身份验证
112 1
|
8月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
144 0
|
8月前
|
开发框架 .NET 数据库连接
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
119 0
|
11月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
441 5
|
11月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
109 0
|
11月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
|
11月前
|
SQL 开发框架 JavaScript
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
分享33个ASP.NET电子商务源码和40个ASP.NET控件组件源码,总有一款适合您
173 0
|
11月前
|
存储 开发框架 .NET
Asp.Net第一章入门之后台处理程序
Asp.Net第一章入门之后台处理程序
71 0

热门文章

最新文章