1. 程式人生 > >在ASP.NET MVC中使用Area區域

在ASP.NET MVC中使用Area區域

    在大型的ASP.NET mvc5專案中一般都有許多個功能模組,這些功能模組可以用Area(中文翻譯為區域)把它們分離開來,比如:Admin,Customer,Bill。ASP.NET MVC專案中把各個功能分為不同Area的之後每一個Area都有獨立的Controller,View檔案結構。這樣可以把這些功能分給不同的開發者同時開發而彼此之間不會衝突,這樣的檔案結構各司其職,直觀明瞭,易於維護和管理。下面我們看看怎麼在ASP.NET MVC5中建立一個Area和Area直接之間連結的處理。

一、ASP.NET MVC5中建立Area區域

    選中我們的ASP.NET MVC專案,右鍵選單,新增=》區域,這裡我們取名為Admin,在專案根目錄將會生成一個Admin資料夾,如下圖:

    我們來看這個Area是怎麼在專案的起作用的。

    我們來看Global.asax.cs的程式碼:

public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }

    第一行的程式碼:AreaRegistration.RegisterAllAreas();就是註冊 ASP.NET MVC 應用程式中的所有區域。每一個區域它有自己的都有獨立的Controller,View檔案結構和路由配置,我們完全可以把ASP.NET MVC的區域看成一個ASP.NET MVC專案。

    注意: RouteConfig.RegisterRoutes(RouteTable.Routes)在AreaRegistration.RegisterAllAreas();的後面。這一點很關鍵,你最好是不要改變這個順序。之前我們談到過ASP.NET MVC路由系統是按註冊路由的先後順序來匹配的,這裡RegisterAllAreas在前面表示MVC路由系統會先去匹配Area中的路由配置規則,如果你改變了順序可能會找到錯誤的Controller,發生意外的錯誤。

    在ASP.NET MVC5的每個區域都有一個類:區域名+AreaRegistration,比如我們剛才建的一個Admin區域AdminAreaRegistration類:

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 { action = "Index", id = UrlParameter.Optional }
            );
        }
    }

    這個類的作用主要是用於標示區域名稱和區域Controller的路由,可以看到路由規則為"Admin/{controller}/{action}/{id}",前面統一跟了一個Admin。

二、在Area區域的檢視之間Action的連結跳轉的處理

    當在ASP.NET MVC專案中使用了AreaArea區域後,會涉及到不同Area的Action連結之間相互跳轉,我使用Html.ActionLink有些地方需要注意。

1、同一個Area之間跳轉

    在Area區域的檢視中生成指向同一個Area的Action連結時,你不需要做任何處理,當你呼叫Html.ActionLink時MVC框架自動去找當前Area的相應路由來生成Action的連結。如下:

@Html.ActionLink("Click me", "About") 

    生成下面的html:

<a href="/Admin/Home/About">Click me</a> 

2、不同Area之間跳轉

@Html.ActionLink("Click me to go to another area", "Index", new { area = "Support" }) 

3、跳轉到不是帶Area的Action
    我們知道使用Html.ActionLink沒有指定area,預設就是當前的area。有時我們需要連結到頂層的Controller的Action,就是不要帶area,也很簡單,只需要把area傳空字串就可以了。如下:

@Html.ActionLink("Click me to go to another area", "Index", new { area = "" }) 

相關推薦

ASP.NET MVC使用區域來方便管理controller和view

空間 查看 span name 新建 文件 img info con 在ASP.NET MVC中使用區域來方便管理controller和view 在mvc架構中,一般在controllers和views中寫所有控制器和視圖, 太多控制器時候,為了方便管理,想要將關於per

ASP.NET MVC使用Area區域

    在大型的ASP.NET mvc5專案中一般都有許多個功能模組,這些功能模組可以用Area(中文翻譯為區域)把它們分離開來,比如:Admin,Customer,Bill。ASP.NET MVC專案中把各個功能分為不同Area的之後每一個Area都有獨立的Controller,View檔案結構。這樣可以把

Asp.net MVC如何獲取控制器的名稱

tex 如何 route 控制 this .get data control str 如果在代碼中 當前controller、action的獲取RouteData.Route.GetRouteData(this.HttpContext).Values["controlle

asp.net mvchtml helper的一大優勢

ont size color 優勢 其中 系統 per .net strong 剛上手這個框架,發現其中的html helper用起來很方便,讓我們這些從web form 過渡來的coder有一種使用控件的快感,嘻嘻! 言歸正傳,我要說的是在使用它時,系統會自動執行表單的現

淺析Asp.net MVC Ajax的使用

x11 生成 table ex18 review arp javascrip tle func 在ASP.NET MVC beta中我們可以使用Ajax.BeginForm, Ajax.ActionLink來進行Ajax調用,同樣我們也可以使用一些支持Ajax 框架如jQ

ASP.NET MVC 路徑的解惑

src javascrip pan 開頭 失效 如果 語言 baidu rip 很多人在寫代碼的時候關於路徑這個問題很頭疼,其實路徑是很簡單的,只是沒人幫我們點投!初次學習程序的人,我相信肯定會遇到和我一樣的問題,比如說,“/”和“~”引用路勁的區別,接下來看吧,這篇文章肯

Asp.net mvc使用配置Unity

ges mage bsp 使用 cacti .cn 技術 效果展示 onf 第一步:添加unity.mvc 第二步:在添加之後會在app_start中生成UnityConfig.cs,UnityMvcActivator.cs 第三步:使用 第四步:效果展示 Asp

asp.net mvc如何處理字符串與對象之間的序列化與反序列化(一)

osi strong 類結構 plain pbo edate inf esc arp 前臺我們一般用ajax來發送數據到後端進行處理,如果json數據結構和後臺的實體類結構一致,就直接可以反序列化為指定的對象進行操作,非常方便。 前端發送的json數據結構: 後端實體結

ASP.NET MVC利用Aspose.cells 將查詢出的數據導出為excel,並在瀏覽器下載。

width tdi 新增 column 需求 options 解決 印象 ats 正題前的嘮叨 本人是才出來工作不久的小白菜一顆,技術很一般,總是會有遇到一些很簡單的問題卻不知道怎麽做,這些問題可能是之前解決過的。發現這個問題,想著提升一下自己的技術水平,將一些學的新的‘好

log4net 使用總結- (1)在ASP.NET MVC 使用

站點 href 還需 配置文件 str nag org src stat 1. 去官網下載log4net.dll,增加引用到站點下(你也可以通過nuget 安裝) http://logging.apache.org/log4net/download_log4net.cgi

ASP.NET MVC使用Castle Windsor

tac col sta undle 文件中 isp path http start 平常用Inject比較多,今天接觸到了Castle Windsor。本篇就來體驗其在ASP.NET MVC中的應用過程。 Visual Studio 2012創建一個ASP.NET

ASP.NET MVC為DropDownListFor設置選中項的方法

相等 ret info href submit value and number else 在MVC中,當涉及到強類型編輯頁,如果有select元素,需要根據當前Model的某個屬性值,讓Select的某項選中。本篇只整理思路,不涉及完整代碼。 □ 思路 往前臺視圖傳的類型

asp.net mvc 使用單例

客戶端 using led sta .get list() ice 單例 namespace 有這樣一個service,需要運行的asp.net站點上,但要保證這個實例是唯一的。單例用來啟用聊天機器人,保證唯一,以免啟動多個,造成客戶端發送消息的時候,會造成每個機器人都發送

asp.net MVC Session統一驗證的方法

pla sta tails project ssi 一個 str urn string 驗證登錄狀態的方法有:1 進程外Session 2 方法過濾器(建一個類繼承ActionFilterAttribute)然後給需要驗證的方法或控制器加特性標簽 3 :新建一個Ba

ASP.NET MVC使用FluentValidation驗證實體

state route html 程序 app int pre ima add 1、FluentValidation介紹   FluentValidation是與ASP.NET DataAnnotataion Attribute驗證實體不同的數據驗證組件,提供了將實體與驗證

ASP.NET MVC錯誤處理方式

itl com archive href tle http ive hive .html http://www.cnblogs.com/shenba/archive/2011/04/16/2018441.htmlASP.NET MVC中錯誤處理方式

async、await在ASP.NET[ MVC]之線程死鎖的故事

div pos ask 其他 flow ron ttpClient com async 場景重構 public ActionResult Index(string ucode) { string userInfo = G

asp.net -mvc框架復習(5)-ASP.NET MVC的視圖簡單使用

font height logs 認識 知識 分類 ges mil c中 1.視圖分類 ASPX視圖(現在講解) Razor視圖(後面講解) ASPX 視圖: 2.@page指令 作用:頁面的聲明 要求:必須放在第一行,常用指令屬性如下: 3.服務器端內嵌

高性能緩存系統Memcached在ASP.NET MVC應用

index req 緩存系統 help add nts .... ont p s 首先下載windows平臺下的memcached,然後安裝。安裝完之後就是啟動memcached服務了,你可以在cmd下用dos命令輸入,也可以在計算機管理->服務->memcac