2
私の要件は、同じコントローラ/アクションメソッドに複数のルートを設定する必要があるということです。ASP.NET MVC 5のルート
ユーザがURL http://localhost:xxxx/home/indexを入力すると、「ホーム」コントローラの「インデックス」アクションメソッドをターゲットにします。
また、「http://localhost:xxxx/products」と「http://localhost:xxxx/categories」は、「ホーム」コントローラの「インデックス」アクションメソッドを指しているようにします。
「カテゴリ」と「製品」の2つのルートを追加することで、これを実現できました。これはうまくいきます。
routes.MapRoute(
name: "categories",
url: "categories",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "products",
url: "products",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
私の質問は、これら2つのルート「カテゴリ」と「製品」を1つに結合する方法はありますか?
短い答え:いいえ(あなたが '{ID}は'第2の経路に、あなたにも 'ID = UrlParameter.Optional'を除去することができるためのセグメントを持っていないので) 。あなたは経路制約を作成できると言っていたが、おそらくその価値はない。 –
経路属性の正規表現フィルタは、あなたの友人かもしれません。私はそれと非常によく似たことをすることができました。いくつかの情報はここにあります:http://stackoverflow.com/questions/25077406/regex-in-route-attribute-restful-api-asp-net-web-api –
あなたが属性のルーティングに行くことができるなら、それはきれいでしょう。実際にそれを組み合わせる)[ルート( "Home/Index")] [ルート( "製品")] [ルート(カテゴリ)] public ActionResult Index() { return View(); } ' – Developer