MVC 多级文件夹问题,关于asp.net mvc2.0的Areas的应用

此文只写给遇到同样问题的人看的,因此写得会有点短

问题:

   有个项目需要到:1、用户管理后台、2、开发人员后台、3用户前台

   拿其中的文章列表这模块来举例

   预计访问路径:1、用户管理后台:http://demo.com/admin/News/index

            2、开发人员后台:http://demo.com/s7mmer/News/index

          3、用户前台http://demo.com/News/index

  

   使用asp.net mvc1.0做这个是非常麻烦的事情,网上查了下,发现asp.net mvc2.0提供了Areas特性

解决:

网上查了下用法,上面说给项目添加一个名字为Admin的areas,打开VS右键项目或者文件夹都找不到areas这个选项,不知道是我理解错误还是补丁没装好?

于是只能采取如下步骤:

1、在根目录下新建个Areas文件夹的

2、在Areas 中手动建目录如下

3、添加映射,在Areas文件夹下新建一个类MyAreaRegistration.cs

代码如下:

 

ExpandedBlockStart.gif 代码
using  System;
using  System.Collections.Generic;
using  System.Linq;
using  System.Web;
using  System.Web.Mvc;
using  System.Web.Routing;
namespace  S7mmer.Web
{
    
public   class  AdminAreaRegistration : AreaRegistration
    {
        
public   override   string  AreaName
        {
            
get  {  return   " Admin " ; }
        }
        
public   override   void  RegisterArea(AreaRegistrationContext context)
        {
            
// 匹配规则可以自己修改
            context.MapRoute(
                
" AdminController_default " ,
                
" Admin/{controller}/{action}/{id} " ,
                
new  { controller  =   " Home " , action  =   " Index " , id  =   ""  },  //  Parameter defaults
                 new   string [] {  " S7mmer.Web.Areas.Admin.Controllers "  } // controllers的命名空间
            );
        }
    }
    
public   class  S7mmerAreaRegistration : AreaRegistration
    {
        
public   override   string  AreaName
        {
            
get  {  return   " S7mmer " ; }
        }
        
public   override   void  RegisterArea(AreaRegistrationContext context)
        {
            
// 匹配规则可以自己修改
            context.MapRoute(
                
" S7mmerController_default " ,
                
" S7mmer/{controller}/{action}/{id} " ,
                
new  { controller  =   " Home " , action  =   " Index " , id  =   ""  },  //  Parameter defaults
                 new   string [] {  " S7mmer.Web.Areas.S7mmer.Controllers "  } // controllers的命名空间
            );
        }
    }


    
public   class  WebSiteAreaRegistration : AreaRegistration
    {
        
public   override   string  AreaName
        {
            
get  {  return   " WebSite " ; }
        }
        
public   override   void  RegisterArea(AreaRegistrationContext context)
        {
            
// 匹配规则可以自己修改
            context.MapRoute(
                
" WebSiteController_default " ,
                
" {controller}/{action}/{id} " ,
                
new  { controller  =   " Home " , action  =   " Index " , id  =   ""  },  //  Parameter defaults
                 new   string [] {  " S7mmer.Web.Areas.WebSite.Controllers "  } // controllers的命名空间
            );
        }
    }

}

 

4、在Areas文件夹下的Admin文件夹下新建一个NewsController.cs

5、在NewsController.cs中的public ActionResult Index()中右键添加view,发现在

已经在news中添加了index.aspx

6、修改根目录下的Global.asax文件,在Application_Start()里面添加AreaRegistration.RegisterAllAreas();

 

         protected   void  Application_Start()
        {
            AreaRegistration.RegisterAllAreas();  
         
//    RegisterRoutes(RouteTable.Routes);
        }

 

 

编译、访问 http://localhost:1108/admin/News/index,用户管理后台访问成功!

其他按照上面的步骤来就可以达到了效果,这样子可以实现前后台文件的分离,方便管理

 

《逆水行舟,不进则退》

转载于:https://www.cnblogs.com/s7mmersupport/archive/2010/11/08/1871970.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值