1

Je ne peux pas comprendre cela.Conflit de contrôleur MVC C# (site avant avec zone d'administration)

Comment résoudre le problème?

AdminAreaReistration cs

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

RouteConfig

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

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 

enter image description here

+0

Comment est l'erreur générée? Essayez-vous d'aller à une URL particulière ou essayez-vous de générer une URL avec quelque chose comme «Url.Action»? –

Répondre

1

Selon l'image d'erreur, vous pouvez utiliser différents espaces de noms lors de la déclaration d'une zone en RegisterArea pour éviter les conflits de nommage entre la route par défaut et itinéraire:

AdminAreaRegistration.cs

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "CMSAdmin_default", 
     "CMSAdmin/{controller}/{action}/{id}", 
     new { action = "Index", id = UrlParameter.Optional }, 
     new[] { "cms.site.Areas.CMSAdmin.Controllers" } // Insert area namespace here 
    ); 
} 

RouteConfig.cs

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

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Default", action = "Index", id = UrlParameter.Optional }, 
     namespaces: new[] { "cms.site.Controllers" } // Insert project namespace here 
    ); 
} 

Les causes possibles de Multiple types were found that match the controller name erreur:

1) En utilisant même le nom du contrôleur avec des zones différentes (ce qui est probablement votre numéro actuel),

2) Renommer le nom de l'espace de noms/l'assembly du projet (supprimer l'ancien fichier DLL du nom du projet dans répertoire side/bin puis nettoyer et reconstruire à nouveau),

3) Conflit entre des références avec le même nom mais des versions différentes (supprimer la référence plus ancienne, puis refactoriser).

Références:

Multiple types were found that match the controller named 'Home'

Having issue with multiple controllers of the same name in my project

+0

Merci. Vous êtes le seul à répondre très clairement à ce problème. :) Mon problème à l'article 1 –