Как настроить области в ASP.NET MVC3 - PullRequest
36 голосов
/ 09 марта 2011

Кто-нибудь знает, как настроить области в ASP.NET MVC3. Я прочитал статью об областях в здесь . Но эта статья не основана на MVC3. В MVC3 нет функции с именем MapRootArea в RouteCollection routes, которая находится в Global.asax

routes.MapRootArea("{controller}/{action}/{id}", 
                 "AreasDemo", 
                  new { controller = "Home", action = "Index", id = "" });

Когда я создаю новую область, используя MVC3, я получил класс этой области, который унаследован от AreaRegistration и выглядит следующим образом: (здесь Blogs - это имя области)

public class BlogsAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Blogs";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Blogs_default",
            "Blogs/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }
}

Кто-нибудь, пожалуйста, помогите мне, как настроить область в MVC3. Любая ссылка также будет полезна.

Ответы [ 3 ]

40 голосов
/ 09 марта 2011

Щелкните правой кнопкой мыши по вашему веб-проекту и выберите Add -> Area ... Затем введите имя области, и Visual Studio позаботится об остальном, который должен сгенерировать все необходимые классы. Например, регистрация области может выглядеть так:

public class AreasDemoAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "AreasDemo";
        }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "AreasDemo_default",
            "AreasDemo/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }
}

и Application_Start вашего Global.asax все, что вам нужно:

AreaRegistration.RegisterAllAreas();
5 голосов
/ 24 сентября 2011

Вы можете иметь одно и то же имя контроллера в корне и области, вам просто нужно определить его.

В вашем global.asax добавьте последнюю строку маршрутов.*

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

также добавьте имя контроллера в файл ares / ????? AreaRegistration.cs

 context.MapRoute(
        "Membership_default",
        "Membership/{controller}/{action}/{id}",
         new { controller= "Home", action = "Index", id = UrlParameter.Optional }
      );
1 голос
/ 11 ноября 2014

смотрите ниже изображение показывает, как настроить область в MVC. enter image description here

...