ASP.NET MVC 路由和区域

13

我正在使用ASP.NET MVC 2 Preview 2,并尝试弄清楚路由与区域的工作原理。在一个单一项目的区域实现中,我想要一个名为"admin"的区域。

我想要能够拥有这样的URL:

(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

我已经创建了区域。我已经创建了它们各自的视图和控制器,但是我似乎无法正确地设置路由。你有什么建议可以帮助我实现这样的路由吗?

我相信对于一些人来说,这可能非常简单,但我还没有找到超越基本内容的示例。

谢谢!

问题的补充(10/25/2009) 基本上我想知道在区域的AreaRegistration类中应该设置哪些路由以及以什么顺序设置? 我已经完成了所提到的一切,但是没有结果。

2个回答

27

在单个项目中注册区域

您需要将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 = "" }
            );
        }
    }
}

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" });
路由.MapAreaRoute("论坛", "admin_area", "admin/{controller}/{action}/{id}", 新的{控制器="苹果",操作="搜索",id="" }, 新的字符串[]{"项目.区域.管理员.控制器"});

这是针对ASP.NET MVC 2 Preview 1的 - 我正在使用包含单个项目中区域的开箱即用实现的Preview 2进行工作。在Preview 2中,RouteCollection甚至没有MapAreaRoute方法。 - Dan Appleyard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接