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


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