Le routage de zone MVC 4 ne fonctionne pas

J’ai créé une application MVC4 vide, tout fonctionne bien, puis j’ajoute une zone à mon projet nommé “Modérateur”. Mon code de routage régional est comme ceci:

using System; using System.Web.Mvc; namespace EskimoArt.Areas.Moderator { public class ModeratorAreaRegistration : AreaRegistration { public override ssortingng AreaName { get { return "Moderator"; } } public override void RegisterArea(AreaRegistrationContext context) { context.MapRoute( "Moderator_default", "Moderator/{controller}/{action}/{id}", new {controller="Dashboard", action = "Index", id = UrlParameter.Optional } ); } } } 

Et mon code Global.asx est comme ceci:

 using System.Web.Http; using System.Web.Mvc; using System.Web.Optimization; using System.Web.Routing; namespace EskimoArt { // Note: For instructions on enabling IIS6 or IIS7 classic mode, // visit http://go.microsoft.com/?LinkId=9394801 public class MvcApplication : System.Web.HttpApplication { protected void Application_Start() { AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); } } } 

Mais maintenant je veux accéder à la

 > http://localhost/Moderator/Dashboard 

Il montre une page d’erreur comme celle-ci

 Server Error in '/' Application. The resource cannot be found. Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly. Requested URL: /Moderator Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.17929 

J’ai eu le même problème. Vous regardez App_Start / RouteConfig.cs et ajoutez en haut ce code AreaRegistration.RegisterAllAreas ();

 public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); AreaRegistration.RegisterAllAreas(); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); } } 

Créer créer Zones / Modérateur / Contrôleurs / DashboardController.cs

 public class DashboardController : Controller { // // GET: /Moderator/Dashboard/ public ActionResult Index() { return View(); } } 

et créer

Zones / Modérateur / Vues / Tableau de bord / Index.cshtml

Vous devez également avoir Web.config dans Zones / Modérateur / Vues / Web.config …

Vérifiez l’ namespace de namespace de votre contrôleur.

J’avais déplacé du code dans une zone et l’espace de noms affichait toujours l’ancien emplacement.

ReSharper a une très bonne option pour réparer les espaces de noms de tous les fichiers du dossier, du projet ou de la solution! C’est très pratique pour résoudre ce problème.

Essayez simplement de supprimer le contenu des répertoires suivants, comme mentionné ici, et de reconstruire le projet.

C: \ Temp C: \ Utilisateurs \% Nom d’utilisateur% \ AppData \ Local \ Microsoft \ VisualStudio C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Fichiers ASP.NET temporaires C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Chemin temporaire des fichiers ASP.NET \ To \ Your \ Project \ obj \ Debug

Ajoutez simplement le paramètre nommé “namespace:” dans la méthode RegisterRoutes() de RouteConfig.cs dans le dossier App_Start . Et spécifiez la valeur de “namespace” pour l’espace de noms de votre contrôleur, dans lequel vous voulez appeler une méthode d’action. Dans l’exemple suivant, je souhaite appeler la méthode Index() dans Village Controller à partir de la racine du projet.

 public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Village", action = "Index", id = UrlParameter.Optional }, namespaces: new ssortingng[] { "MvcApplication1.Controllers" } ); } 

Assurez-vous que dans les propriétés du projet> Web> Action de démarrage> si une page spécifique | action | url est défini, il correspond aux itinéraires mappés.

Il vaut mieux append

AreaRegistration.RegisterAllAreas ();

dans global.asax.cs. Vous devez placer dans l’ordre suivant.

 GlobalConfiguration.Configure(WebApiConfig.Register); RouteConfig.RegisterRoutes(RouteTable.Routes); AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 

Notez l’une des choses que RegisterAllAreas () devrait être après l’enregistrement des itinéraires. c’est à dire. RouteConfig.RegisterRoutes(RouteTable.Routes); devrait être avant AreaRegistration.RegisterAllAreas(); .J’ai essayé et testé et cela a fonctionné pour moi.

Pour plus d’informations: entrez la description du lien ici