MVC4 Route par défaut lors de l'utilisation de zones
Je suis en train d'utiliser les zones à l'intérieur de MVC application, je voudrais que la route par défaut sera résolu à la HomeController à l'intérieur de la zone d'admin, mais il se résout à la maison de contrôleur de la racine du site.
J'ai ajouté de l'espace de noms de l'admin HomeController mais toujours résolu à la racine contrôleur HomeController.
Mon Itinéraire config:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new {controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] {"MvcApplicationAreas.Areas.Admin.Controllers"}
);
}
}
zone d'administration de l'itinéraire
public class AdminAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Admin";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Admin_default",
"Admin/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional }
);
}
}
HomeController - zone d'administration
namespace MvcApplicationAreas.Areas.Admin.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
}
Aucune idée de pourquoi ça ne serait pas résoudre correctement?
Grâce
source d'informationauteur spooti
Vous devez vous connecter pour publier un commentaire.
J'ai testé votre code pour le domaine de l'enregistrement et il fonctionne et sélectionne le contrôleur. Cependant, le point de vue de la résolution retrouve la vue dans le dossier racine, même si le contrôleur est utilisé.
Pour tester, j'ai utilisé la suite de la maison de l'indice dans mes domaines de la maison de contrôleur:
Alors mon index.chstml dans /Views/Home:
et mon index.cshtml /Zones/Admin/Views/Home:
Lors de l'exécution, la sortie est:
Si la route rend la maison contrôleur dans la zone d'admin courir, mais alors ce qui vue la résolution de passe et trouve la vue de la racine à la place de l'admin view.
Donc en fin de compte, c'est en effet le point de vue de la sélection qui est mal, alors votre problème est le même que dans Comment définir une Route par Défaut (une Zone) en MVC.
La façon la plus simple est d'ajouter un jeton de données par défaut de votre itinéraire:
Simplement ajouter
à la fin de votre itinéraire par défaut définition.
Cette solution sera cassé votre API route.
Vous devez avoir un nom unique pour chaque région, comme le défaut de la zone de fait:
La solution correcte à défaut d'itinéraire ci-dessous:
Site Web de l'itinéraire:
Route principale de rediriger les utilisateurs de la "Commune" de la zone:
Essayez de faire de cette façon....il aidera à distinguer.Même si vous n'avez pas ajouter de la zone="Web", ses beaux -
Même façon
Ajouter l'Index de la méthode d'action dans votre racine par défaut du contrôleur de la maison. Dans l'action Index utilisation d'une méthode de "return redirecttoaction" déclaration pour la valeur par défaut de la zone de redirection
Route par défaut doit être
Facile d'itinéraire à partir de zones de AreaRegistration Page:
Dans votre
RouteConfig.cs
route par défaut est par la route par défaut, MVC appel à d'abord parce que dans MVC de la route spécifiée très d'abord, il sera appel comme ça