0

J'utilise le routage d'attribut dans mon application MVC5 et cela fonctionne correctement. Lorsque j'ai essayé de créer un routage d'attribut area et placé sur le contrôleur, il renvoie 404.Le routage d'attribut n'atteint pas les méthodes d'action à l'intérieur des contrôleurs

Je sais, pour activer le routage d'attributs dans Area, je dois utiliser [RouteArea("Area Name Here")] et ajouter routes.MapMvcAttributeRoutes(); dans ma classe RouteConfig . Je l'ai fait tout cela et conçu mon contrôleur comme ceci:

[RouteArea("Client")] 
[RoutePrefix("Client")] 
public class ClientController : Controller 
{ 
    #region Properties 
    private readonly string apiUrl = ConfigurationManager.AppSettings["apiUrl"]; 
    #endregion 

    #region Constructor 
    public ClientController() 
    { 

    } 
    #endregion 

    #region Action Methods 
    [HttpGet, Route("create")] 
    public ActionResult Index() 
    { 
     --logic here 
    } 
    #endregion 
} 

Quand je lance l'application en utilisant la route: http://localhost:26189/Client/create, je suis en mesure de frapper le constructeur, mais pas la méthode Index. Fait intéressant, si je supprime l'attribut [HttpGet, Route("create")] et essayez cette route http://localhost:26189/Client/Index il va frapper la méthode Index.

Je vais à ces liens, mais pas trouvé la solution exacte: https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/#route-areas

+0

Je suppose que vous devez également ActionName attribut comme '[ActionName ("créer")] 'pour l'action d'index. – Amit

+0

@Amit - J'ai essayé d'ajouter cet attribut mais pas de chance :( –

+0

Y at-il une définition de routage ailleurs qui remplace le vôtre? – Amit

Répondre

0

Vous avez probablement des problèmes de commande dans votre chemin de démarrage. Assurez-vous que les choses sont appelées dans cet ordre:

  1. AreaRegistration.RegisterAllAreas();
  2. routes.MapMvcAttributeRoutes();
  3. Les itinéraires de type conventionnel
+0

Essayé mais toujours pas en mesure de résoudre le problème :( –