zoukankan      html  css  js  c++  java
  • MVC区域使用

    新建项目 Main:

    image

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

    image

    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控制器

    image

    内容:

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

    给项目添加区域(Admin):

    image

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

    image

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

    image

    视图代码:

    @{
        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";
            }
        }

    运行项目:

    image

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

    修改住项目的api路由:

    image

    代码:

    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错误)

    image

    运行项目,正常访问:

    image

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

    image

    添加一个区域注册类:

    image

    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的路由:

    image

    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的区域文件夹:

    image

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

    image

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

    复制Second/bin到Main/bin

    配置IIS:

    image

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

    image

    运行结果:

    image

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

    慎于行,敏于思!GGGGGG
  • 相关阅读:
    单源最短路——SPFA算法(Bellman-Ford算法队列优化)
    A Compatible Pair
    欧拉函数知识点总结及欧拉函数打表代码(数论)
    Fafa and the Gates(模拟)
    C语言--链表基础模板
    路由器如何设置上网(TP-LINK)
    学员成绩管理系统
    Bad Cowtractors(最大生成树)
    Agri-Net(最小生成树)
    Median Weight Bead(最短路—floyed传递闭包)
  • 原文地址:https://www.cnblogs.com/GarsonZhang/p/5770321.html
Copyright © 2011-2022 走看看