MVC区域使用

新建项目 Main:

添加一个MVC5控制器并添加index视图:(HomeController)

Views/Home/Index.cshtml内容:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        <h1>Main Inde 页面</h1>
    </div>
</body>
</html>

添加一个默认API控制器

内容:

public class DefaultController : ApiController
    {
        [HttpGet]
        public object get()
        {
            return "main API";
        }
    }

给项目添加区域(Admin):

会自动添加一个Areas文件夹,文件夹下子文件名和区域名相同

给Admin添加一个MVC5控制器和一个API控制器

视图代码:

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div>
        <h1>Admin Page</h1>
    </div>
</body>
</html>

API代码:

public class AdminAPIController : ApiController
    {
        [HttpGet]
        public object get()
        {
            return "Admin API";
        }
    }

运行项目:

区域页面正常显示!区域的api无法访问:

修改住项目的api路由:

代码:

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服务

            // Web API 路由
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
            // 添加区域API路由转播
            config.Routes.MapHttpRoute(
                name: "Admin_DefaultApi",
                routeTemplate: "Admin/api/{controller}/{id}",
                defaults: new { area = "Admin", id = RouteParameter.Optional }
            );
        }
    }

routetemplate:区域api的路由

area:区域名称

项目Global中把API路由配置放到第一行,(放下面会报404错误)

运行项目,正常访问:

接下来新建一个mvc子项目,并添加mvc控制器和api控制器:

添加一个区域注册类:

public class SecondAreaRegistration : AreaRegistration
    {
        //区域名称
        public override string AreaName
        {
            get
            {
                return "Second";
            }
        }
        //注册区域路由
        public override void RegisterArea(AreaRegistrationContext context)
        {
            context.MapRoute(
                "Second_default",
                "Second/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }

修改API路由,添加second的路由:

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API 配置和服务

            // Web API 路由
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );

            // 添加AdminAPI路由转播
            config.Routes.MapHttpRoute(
                name: "Admin_DefaultApi",
                routeTemplate: "Admin/api/{controller}/{id}",
                defaults: new { area = "Admin", id = RouteParameter.Optional }
            );

            // 添加SecondAPI路由转播
            config.Routes.MapHttpRoute(
               name: "Second_DefaultApi",
               routeTemplate: "Second/api/{controller}/{id}",
               defaults: new { area = "Second", id = RouteParameter.Optional }
           );

        }
    }

发布项目:

在Main发布后的文件夹中新建一个Second的区域文件夹:

复制Second项目发布的Views文件夹到Main/Areas/Second

如果有类库或者js脚本的话,复制到Main根目录中响应的文件夹下

复制Second/bin到Main/bin

配置IIS:

权限不足的话复制到非系统盘:

运行结果:

源代码下载:https://github.com/GarsonZhang/MVCAreaDemo

时间: 2024-11-13 05:07:57

MVC区域使用的相关文章

记录学习MVC过程,MVC区域母版页(七)

1.MVC的区域就是一个小的mvc,区域路由高于普通的路由 mvc区域自带m,v和c,可以把产品,会员,新闻,文件多的时候,可以用多个区域分割项目成小项目 2.渲染局部视图和局部action  (ifram方式不会被蜘蛛爬到,不利于SEO) @{ //Html.RenderPartial("About"); //只渲染了about的页面,数据不会被加载 Html.RenderAction("About");//页面和controller里传过来的数据都被渲染了 }

MVC区域 视图必须派生自 WebViewPage 或 WebViewPage&lt;TModel&gt;

http://blog.csdn.net/iack_ji/article/details/16965885 今天在学习 mvc区域时,将区域控制器类 外迁到其他的程序集的练习中出现了"视图必须派生自 WebViewPage 或 WebViewPage<TModel>"错误,后来经过查找资料,发现是原来没有将views文件夹下的web.config文件一起复制到区域文件夹下.

MVC区域小结

MVC3一直在学习,项目中有的时候也会用到,博客园也一直逛,想写点什么东西,可惜我这个人平时都很懒,理论层面的东西自己写不来,还是来点实际的简单入门的博客,对自己总结能力是一种提升,当然也希望对没有使用过区域的人有所帮助. 为什么要有区域? MVC本身提倡的就是关注点分离,控制器控制业务逻辑,模型用于读取数据,视展示展示页面,这样不管是对于开发者本身还是对于后来维护项目的开发者来说都是有极大好处的,能很开熟悉项目的业务,而不会像层次不清晰,代码不规范,逻辑混乱的项目,提升开发效率.但是当项目本身

MVC 区域内默认控制器不能访问(Multiple types were found that match the controller named ‘Index&#39;)

异常处理汇总-后端系列 http://www.cnblogs.com/dunitian/p/4523006.html 错误信息 和主页的默认控制器冲突了,修改下Areas里面的默认控制器就可以了 MVC 区域内默认控制器不能访问(Multiple types were found that match the controller named 'Index')

将子域名请求路由到MVC区域

写了个扩展,分享给需要的朋友. 0x01 使用方法 在mvc区域中的{xxxx}AreaRegistration.cs文件中,如ProjectsAreaRegistration.cs <pre> <code> using Dsvisual.Extensions; namespace Dsvisual.WebApp.Areas.Projects{    public class ProjectsAreaRegistration : AreaRegistration    {     

MVC 区域功能

因为MVC项目是要求都放在固定的文件夹,所以,当项目大的时候,会很不方便管理,所以微软引入的区域的功能 使用方法: 在项目上右击--添加--区域 就会出现Areas的文件夹,里面就是子MVC 渲染: Html.RenderPartial("About");  //只是把About的视图(也就是HTML页)渲染(嵌套)到Index页 Html.RenderAction("About");  //是讲控制器的Action也渲染到Index页

MVC 区域模块

mvc4.0新增的area区域机制,可以协助你在架构较为大型的项目,让独立性较高的部分功能独立成一个MVC子网站,以降低网站与网站之间的耦合性,也可以通过area的切割,让多人同时开发同一个项目时候,能够减少互相冲突的机会. 在mvc项目中不能有两个同名的控制器,即使你有区分不同的命名空间可以正常编译,但实际上在运行时仍然出错,除非在app_start/RouteConfig文件中通过mapRoute方法新增网址路由的设置,并明确指定命名空间,才能让此功能正常运行. 添加区域 项目上单击右键 添

VS2013和VS2015中MVC 区域路由匹配顺序相反

创建测试工程 分别在vs2013和vs2015中创建mvc项目,并创建First.Second.Three三个Area,每个Area下面创建一个HomeController和Index视图.修改RouteConfig.cs中的路由注册方法,添加命名空间 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.M

使用区域组织 ASP.NET MVC 应用程序

MVC 模式可将应用程序的模型(数据)逻辑与其呈现逻辑和业务逻辑分离. 在 ASP.NET MVC 中,这种逻辑分离还在项目结构中以物理方式实现,在该项目结构中,控制器和视图保存在使用命名约定定义关系的文件夹中. 此结构可满足大多数 Web 应用程序的需求. 但是,一些应用程序可能具有大量控制器,而每个控制器又可能与若干个视图关联. 对于这些类型的应用程序,默认的 ASP.NET MVC 项目结构可能不实用. 为了满足大型项目的需要,ASP.NET MVC 允许您将 Web 应用程序划分为较小单