2009-10-25 122 views
13

我搞乱了ASP.NET MVC 2 Preview 2,并试图弄清楚路由如何与区域等工作。在单个项目实施的区域中,我想要一个名为“admin”的区域。ASP.NET MVC路由和区域

我想能有网址是这样的:

(root)/admin/apples/search 
(root)/admin/apples/edit/3 
(root)/admin/apples/add 
(root)/admin/oranges/search 
(root)/admin/oranges/edit/5 
(root)/admin/oranges/add 
(root)/admin 

我已经创建了面积。我用各自的视图创建了控制器,但这是我无法得到的路由。有关如何实现此类路由的任何建议?

我相信这对一些人来说可能是非常简单的,但我没有太多的运气找到超出基本内容的例子。

谢谢!

加入到问题(2009/10/25) 我基本上是问什么路线和以什么顺序将我在片区的AreaRegistration类设置?到目前为止,我已经完成了所有提及,但没有结果。

回答

27

Register areas in single project

您必须添加routes.cs文件到管理区的文件夹。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace MvcAreasSingleProject.Areas.Admin 
{ 
    public class Routes : AreaRegistration 
    { 
     public override string AreaName 
     { 
      get { return "admin"; } 
     } 

     public override void RegisterArea(AreaRegistrationContext context) 
     { 
      context.MapRoute(
       "admin_default", 
       "admin/{controller}/{action}/{id}", 
       new { controller = "Admin", action = "Edit", id = "" } 
      ); 
     } 
    } 
} 
+2

这看起来对我来说是正确的。 – Haacked 2009-10-29 00:02:56

0

http://haacked.com/archive/2009/07/31/single-project-areas.aspx

 
routes.MapAreaRoute("Forums", 
     "admin_area", 
     "admin/{controller}/{action}/{id}", 
     new { controller = "apples", action = "search", id = "" }, 
     new string[] { "Project.Areas.Admin.Controllers" }); 
+0

这是ASP.NET MVC 2预览版1 - 我正在开发预览版2,其中包括一个项目中开箱即用的区​​域实现。 RouteCollection甚至没有预览2中的MapAreaRoute方法。 – 2009-10-25 06:39:09

+0

http://forums.asp.net/t/1477416.aspx – 2009-10-25 07:14:02