Nop-ASP.NET MVC Area概念的應用Admin後臺項目

ASP.NET MVC Area概念的應用Admin

For example, you might have a “Blog”area (including a bunch of controller classes related to blogging) and a “Calendar” area (another bunch ofrelated controllers). It’s a nice way of splitting a huge project into asmaller set of manageable ones.在MVC應用中分解程序的概念,由Area組成,Admin中即NameSpace: Nop.Admin.Controllers

一個Area加入後必然的產生一個Class:

public class AdminAreaRegistration : AreaRegistration

    {

        public override string AreaName

        {

            get

            {

               return "Admin";

            }

        }

       //註冊Area。。。

        public override void RegisterArea(AreaRegistrationContextcontext)

        {

           context.MapRoute(

                "Admin_default",

               "Admin/{controller}/{action}/{id}",

               new { controller = "Home", action = "Index", area = "Admin",id = "" },

               new[] { "Nop.Admin.Controllers"}

            );

        }

    }

這個Default的名字是Area_default.AreaName屬性用來定義Area的名子,RegisterArea(AreaRegistrationContext context) 方法中可以看出在瀏覽器的地址欄中URL的樣式爲Profile/{controller}/{action}/{id},是4級構結,只要將context.MapRoute(…)改爲

另外就是  一定要調用到,無論在APP_start還是public static voidRegisterRoutes(RouteCollection routes)

-    -

//Registering some regular mvc stuf

            AreaRegistration.RegisterAllAreas();

AreaRegistration.RegisterAllAreas()方法,這個方法的目地主是找出所有繼承了AreaRegistration的類,並執行RegisterArea(…)方法來完成註冊

public static void RegisterAllAreas() {

            RegisterAllAreas(null);

        }

 

        public staticvoid RegisterAllAreas(object state) {

            RegisterAllAreas(RouteTable.Routes,new BuildManagerWrapper(),state);

        }

 

        internalstatic void RegisterAllAreas(RouteCollectionroutes, IBuildManager buildManager, object state) {

            List<Type> areaRegistrationTypes = TypeCacheUtil.GetFilteredTypesFromAssemblies(_typeCacheName,IsAreaRegistrationType, buildManager);

//以上方法找出所有繼承了AreaRegistration類的Type對象

            foreach (Type areaRegistrationType inareaRegistrationTypes) {

                AreaRegistrationregistration = (AreaRegistration)Activator.CreateInstance(areaRegistrationType);

               registration.CreateContextAndRegister(routes, state);

            }

        }

 

用mvc2建立一個新項目,在網站根目錄下建立Areas文件夾,在Areas文件夾建立你要區分的目錄,例如本例的Website,然後繼續在Website目錄下增加Views目錄,繼續在views目錄下增加需要分類管理Controller目錄和建立aspx文件。使文件結構形成更清晰的分佈

參考:http://msdn.microsoft.com/en-us/library/system.web.mvc.arearegistration.aspx


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章