此文唯寫給遇到同樣問題的人看的,因此寫得會有點短
問題:
有個項目需要到: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,使用者管理後台訪問成功!
其他按照上面的步驟來就可以達到了效果,這樣子可以實現前後台檔案的分離,方便管理
《逆水行舟,不進則退》