Области в asp.net mvc, только одна работа за раз - PullRequest
2 голосов
/ 12 ноября 2009

Моя папка выглядит так:

  • (корень) / Areas / Администратор / Просмотров /..
  • (корень) / Areas / Администратор / Контроллеры /...
  • (корень) /Areas/Admin/Routes.cs

  • (корень) / Areas / Форум / Просмотров /..

  • (корень) / Areas / Форум / Контроллеры /...
  • (корень) /Areas/Forum/Routes.cs

    public class Routes : AreaRegistration
    

    { общедоступная переопределенная строка AreaName { get {return "Admin"; } }

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

    }

    общественного класса Маршруты: AreaRegistration { общедоступная переопределенная строка AreaName { get {return "Forum"; } }

    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, форум начинает работать ...

EDIT:

Home в ~ / Views / не показываться в качестве стартовой страницы, даже если у меня есть

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

в моем Global.asax после AreaRegistration.RegisterAllAreas ();

1 Ответ

2 голосов
/ 12 ноября 2009

Я полагаю, что ваши территориальные отображения должны быть структурированы следующим образом.

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"}
    );
}

Предотвращает конфликты ваших маршрутов, что, как мне кажется, происходит в вашем случае. Поскольку ваш маршрут по умолчанию совпадает с вашим маршрутом администратора.

...