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


免責聲明!

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



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