ASP.NET MVC で URL からコントローラー名を隠す
属性ルーティングで済むのではないかと思い、試してみました。結果、うまくいきました。
RegisterRoutes 内で、MapMvcAttributeRoutes を呼び出します。デフォルトで定義されている MapRoute は、必要がなければ削除(コメントアウト)します。
public class RouteConfig{ public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//属性ルーティングの有効化 routes.MapMvcAttributeRoutes();
//"Home" や "Home/Index" にアクセスする必要がなければ削除 //routes.MapRoute( // name: "Default", // url: "{controller}/{action}/{id}", // defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } //); }}続いて、ルート属性を利用して、指定します。ルートの ”/”、”/Articles”、”/Articles/Index” で Index アクションにアクセスできるように属性を 3 つ設定しています。
public class ArticlesController : Controller{ [Route("~/")] [Route("Articles")] [Route("Articles/Index")] public ActionResult Index() { return View(); }}
💬 コメント