36 votes

Comment configurer les zones en ASP.NET MVC3

Est-ce que quelqu'un sait comment configurer les zones dans ASP.NET MVC3. J'ai lu un article sur les zones dans aquí . Mais cet article n'est pas basé sur MVC3. Dans MVC3, il n'y a pas de fonction nommée MapRootArea sur RouteCollection routes qui se trouve dans Global.asax

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

Lorsque je crée une nouvelle zone en utilisant MVC3, j'obtiens une classe de cette zone qui a hérité de AreaRegistration et ressemblent à ce qui suit : (ici Blogs est le nom de la zone)

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

Quelqu'un pourrait-il m'aider à configurer la zone dans MVC3 ? Tout type de lien serait également utile.

40voto

Darin Dimitrov Points 528142

Faites un clic droit sur votre projet web et sélectionnez Add -> Area... Tapez ensuite le nom de la zone et Visual Studio se chargera du reste, c'est-à-dire de générer toutes les classes nécessaires. Par exemple, l'enregistrement de la zone pourrait ressembler à ceci :

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

et en Application_Start de votre Global.asax tout ce dont vous avez besoin est :

AreaRegistration.RegisterAllAreas();

5voto

shamshir Points 31

Vous pouvez avoir le même nom de contrôleur dans la racine et dans la zone, il suffit de le définir.

Dans votre global.asax, ajoutez la dernière ligne du routes.maproute comme indiqué ci-dessous

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

ajoutez également le nom du contrôleur dans votre fichier ares/?????AreaRegistration.cs

 context.MapRoute(
        "Membership_default",
        "Membership/{controller}/{action}/{id}",
         new { controller= "Home", action = "Index", id = UrlParameter.Optional }
      );

1voto

user1089766 Points 434

L'image ci-dessous montre comment configurer la zone dans le mvc. enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X