Routage d'attributs dans MVC 5
Avant MVC 5, vous pouviez mapper des URL à des actions et des contrôleurs spécifiques en appelant routes.MapRoute(...)le fichier RouteConfig.cs. C'est là que l'url de la page d'accueil est stockée ( Home/Index). Cependant, si vous modifiez l'itinéraire par défaut comme indiqué ci-dessous,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
gardez à l'esprit que cela affectera les URL d'autres actions et contrôleurs. Par exemple, si vous aviez une classe de contrôleur nommée ExampleControlleret une méthode d'action à l'intérieur de celle-ci appelée DoSomething, alors l'URL par défaut attendue ExampleController/DoSomethingne fonctionnera plus car la route par défaut a été modifiée.
Une solution de contournement pour cela est de ne pas jouer avec la route par défaut et de créer de nouvelles routes dans le fichier RouteConfig.cs pour d'autres actions et contrôleurs comme ceci,
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Example",
url: "hey/now",
defaults: new { controller = "Example", action = "DoSomething", id = UrlParameter.Optional }
);
Maintenant, l' DoSomethingaction de la ExampleControllerclasse sera mappée à l'url hey/now. Mais cela peut devenir fastidieux à faire chaque fois que vous souhaitez définir des itinéraires pour différentes actions. Ainsi, dans MVC 5, vous pouvez maintenant ajouter des attributs pour faire correspondre les URL aux actions comme ceci,
public class HomeController : Controller
{
// url is now 'index/' instead of 'home/index'
[Route("index")]
public ActionResult Index()
{
return View();
}
// url is now 'create/new' instead of 'home/create'
[Route("create/new")]
public ActionResult Create()
{
return View();
}
}