2

我的文件夹如下所示:

  • (根)/区域/管理员/视图/..
  • (根)/区域/管理员/控制器/...
  • (根)/Areas/Admin/Routes.cs

  • (根)/区域/论坛/视图/..

  • (根)/区域/论坛/控制器/...
  • (根)/Areas/Forum/Routes.cs

    public class Routes : AreaRegistration
    

    {公共覆盖字符串AreaName {获取{返回“管理员”;} }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Admin_Default",
            "{controller}/{action}/{Id}",
            new { controller = "Admin", action = "Index", Id = (string)null }
        );
    }
    

    }

    公共类路线:AreaRegistration {公共覆盖字符串AreaName {获取{返回“论坛”;} }

    public override void RegisterArea(AreaRegistrationContext routes)
    {
        routes.MapRoute(
            "Forum_Default",
            "{controller}/{action}",
            new { controller = "Forum", action = "Index"}
        );
    }
    

    }

全球.asax

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        AreaRegistration.RegisterAllAreas();

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

起始页应该是 Home/Index 但它以 Admin/Index 开头,为什么?

只有 site.com/Admin 有效,site.com/Forum 无效

我应该如何让管理和论坛区域正常工作?为什么只有管理员工作而不是论坛?

当我删除 Admin/Routes.cs 文件时,论坛开始工作......

编辑:

~/Views/ 中的主页即使我有也不会显示为起始页

    routes.MapRoute(
        "Default",                                              // Route name
        "{controller}/{action}/{id}",                           // URL with parameters
        new { controller = "Home", action = "Index", id = "" }  // Parameter defaults

在我的 Global.asax 之后 AreaRegistration.RegisterAllAreas();

4

1 回答 1

2

我相信你的区域映射应该是这样的结构。

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Admin_Default",
        "Admin/{controller}/{action}/{Id}",
        new { controller = "Admin", action = "Index", Id = (string)null }
    );
}

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        "Forum_Default",
        "Forum/{controller}/{action}/{Id}",
         new { controller = "Forum", action = "Index"}
    );
}

防止您的路线发生冲突,这就是我认为您的情况正在发生的事情。因为您的默认路由与您的管理员路由匹配。

于 2009-11-12T12:06:31.097 回答