より「自然」に感じられるようにルーティングテーブルを指定したいと思います
/製品 /製品/17 /製品/編集/17 /製品/作成
デフォルトの構成に近いですが、「インデックス」アクションはコントローラー名の倍数形式にマップされ、「詳細」アクションはコントローラー名の直後のアイテムのIDに直接マップされます。
次のような特別なルーティングマッピングを明示的に定義することで、これを実現できることを私は知っています。
routes.MapRoute(
"ProductsList",
"Products",
new { controller = "Product", action = "Index" }
);
routes.MapRoute(
"ProductDetails",
"Product/{id}",
new { controller = "Product", action = "Details" }
);
/*
* Ditto for all other controllers
*/
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
上記のコードは私の好みにはあまりにも冗長であり、このURLパターンを広く適用するには、各コントローラーについて少なくとも2回言及する必要があるという欠点があります。
これを一般化する方法はありますか、それともこの場合は肉体労働に縛られていますか?