麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

MVC4中使用Area和注意的地方

2019-11-14 13:50:01
字體:
來源:轉載
供稿:網友

在MVC項目中經常會使用到Area來分開不同的模塊讓項目結構更加的清晰。

步驟如下:

 項目 –> 添加 -> 區域 (Area)

 輸入 Admin

添加成功后

Area包含:
創建一個空MVC工程結構類似,Admin Area 有自己的 Controllers、Models 和 Views 文件夾,不一樣的地方就是多了一個 AdminAreaRegistration.cs 文件,這個文件中定義了一個叫 AdminAreaRegistration 的類,它的內容如下:

 

根目錄可以放一套一樣的結構用來做前端開發使用,而admin 目錄一般會作為管理員后臺來開發!

 

AdminAreaRegistration.cs 文件,這個文件中定義了一個叫 AdminAreaRegistration 的類,它的內容如下:

 1 namespace MvcApp4.Areas.Admin 2 { 3     public class AdminAreaRegistration : AreaRegistration 4     { 5         public override string AreaName 6         { 7             get 8             { 9                 return "Admin";10             }11         }12 13         public override void RegisterArea(AreaRegistrationContext context)14         {15             context.MaPRoute(16                 "Admin_default",17                 "Admin/{controller}/{action}/{id}",18                 new { controller = "home", action = "Index", id = UrlParameter.Optional },19                 namespaces: new[] { "MvcApp4.Areas.Admin.Controllers" } //指定該路由查找控制器類的命名空間20             );21         }22     }23 }

 

 在這里需要注意需加入 Areas 所在的命名空間,來控制 controllers 接收的參數,不然訪問會出現錯誤,往下一點會提到。

namespaces: new[] { "MvcApp4.Areas.Admin.Controllers" }

AreaRegistrationContext 類的 MapRoute 方法和 App_Start-> RouteConfig.cs  的 MapRoute 方法的使用是一樣的,只是區分Area 目錄下的路由控制!

在 Global.asax 中的 application_Start 方法會自動加了這樣一句代碼

1 protected void Application_Start() {2     AreaRegistration.RegisterAllAreas();3 4     WebApiConfig.Register(GlobalConfiguration.Configuration);5     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);6     RouteConfig.RegisterRoutes(RouteTable.Routes);7     BundleConfig.RegisterBundles(BundleTable.Bundles);8 }

 

調用 AreaRegistration.RegisterAllAreas 方法讓MVC應用程序在啟動后會尋找所有繼承自 AreaRegistration 的類,并為每個這樣的類調用它們的 RegisterArea 方法。

 

下面我們來做一個 Demo

 新建兩個訪問連接,內容都是一樣,都是簡單輸出一個 "hello World"

URL定位到 (areas/admin)

http://localhost:18291/Admin/Home/Index

URL定位到(根目錄)

http://localhost:18291/Home/Index 

 

 1     public class HomeController : Controller 2     { 3         // 4         // GET: /Admin/Home/ 5  6         public ActionResult Index() 7         { 8             return Content("hello world"); 9         }10 11     }

 

 

 

 如果剛才沒有加入:

namespaces: new[] { "MvcApp4.Areas.Admin.Controllers" }

運行后就會出現如下錯誤:

 

但是如果我們把根目錄下的  /Home/Index  的內容輸出改成  “Root Say hello World” , 你會發現還是輸出 “hello World”,

這是就是  Controller的歧義問題

這就是我們需要注意的另一個地方

我們需要在App_start下的 RouteConfig.cs 也要增加一個 namespaces 來聲明 Controller 訪問的命名空間!

 

   //App_start下的 RouteConfig.cs   
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }, namespaces: new[] { "MvcApp4.Controllers" }//指定該路由查找控制器類的命名空間 controllers ); } } //areas 下的 /Admin/AdminAreaRegistration.cs public class AdminAreaRegistration : AreaRegistration { public override string AreaName { get { return "Admin"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Admin_default", "Admin/{controller}/{action}/{id}", new { controller = "home", action = "Index", id = UrlParameter.Optional }, namespaces: new[] { "MvcApp4.Areas.Admin.Controllers" } //對應的命名空間的 controllers ); } }

 

 

這樣訪問時就可以區分 , 不同目錄的 controller  

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产精品18久久久久久久 | 亚洲综合精品 | 香蕉久草在线 | 天天草夜夜骑 | 国产精品99久久久久久大便 | 精品在线观看一区 | 欧美性生活久久久 | 午夜视频在线在免费 | 99最新地址| 精品日韩欧美 | 日本一区二区免费在线观看 | 国产毛片aaa一区二区三区视频 | 麻豆蜜桃在线观看 | 久久久99精品视频 | 久久99久久99精品 | 欧美精品久久久久久久多人混战 | 永久免费不卡在线观看黄网站 | 国产91在线亚洲 | 精品不卡| 黄色高清av | 久久久久久亚洲综合影院红桃 | 久久精品中文字幕一区二区 | 羞羞草视频 | 日本在线视频免费 | 一本视频在线观看 | 少妇一级淫片免费放播放 | 91久久久久久久久久久久久 | 欧美乱码精品一区 | 性猛aa久久久 | 久草在线公开视频 | 国产手机av在线 | 毛片免费看电影 | 亚洲av一级毛片特黄大片 | 大学生a级毛片免费视频 | 精品一区二区在线播放 | 国产在线地址 | 免费看操片| 久久久久久久久久久久久久久伊免 | 国产青草视频在线观看视频 | 国产好片无限资源 | av在线免费电影 |