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
Je suppose que vous devez également ActionName attribut comme '[ActionName ("créer")] 'pour l'action d'index. – Amit
@Amit - J'ai essayé d'ajouter cet attribut mais pas de chance :( –
Y at-il une définition de routage ailleurs qui remplace le vôtre? – Amit