MVC 多級檔案夾問題,關於asp.net mvc2.0的Areas的應用

來源:互聯網
上載者:User

此文唯寫給遇到同樣問題的人看的,因此寫得會有點短

問題:

   有個項目需要到: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

代碼如下:

 

代碼

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,使用者管理後台訪問成功!

其他按照上面的步驟來就可以達到了效果,這樣子可以實現前後台檔案的分離,方便管理

 

《逆水行舟,不進則退》

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.