asp.net mvc中的区域,只有一个工作时间

时间:2009-11-12 11:33:53

标签: c# asp.net-mvc areas

我的文件夹如下所示:

  • (根)/地区/管理员/浏览次数/..
  • (根)/地区/管理员/控制器/...
  • (根)/Areas/Admin/Routes.cs

  • (根)/地区/论坛/浏览次数/..

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

    public class Routes : AreaRegistration
    

    {     公共覆盖字符串AreaName     {         得到{return“Admin”; }     }

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

    }

    public class Routes:AreaRegistration {     公共覆盖字符串AreaName     {         得到{返回“论坛”; }     }

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

    }

Global.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
在AreaRegistration.RegisterAllAreas();

之后在我的Global.asax中

1 个答案:

答案 0 :(得分: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"}
    );
}

保持您的路线不会发生冲突,这就是我认为您的情况正在发生的事情。由于您的默认路由与您的管理路由匹配。