MVC4のルートで問題が発生しています。
特定の製品の外部に存在するアクションがいくつかあり、ユーザーが選択した製品の内部に存在するアクションがさらに多くあります。アクションに対応するために、2つのルートをマッピングしました
context.MapRoute(
"CMS_product",
"CMS/{productId}/{controller}/{action}/{id}",
new { controller = MVC.CMS.Home.Name, action = MVC.CMS.Home.ActionNames.Index, productId = default(Guid).ToString(), id = UrlParameter.Optional },
new string[] { "Areas.CMS.Controllers" }
);
context.MapRoute(
"CMS_default",
"CMS/{controller}/{action}/{id}",
new { controller = MVC.CMS.Home.Name, action = MVC.CMS.Home.ActionNames.Index, id = UrlParameter.Optional },
new string[] { "Areas.CMS.Controllers" }
);
したがって、これはジェネリックで機能しますが、私のルートはいずれもデフォルトルートと一致しなくなり、次のようなURLを取得する代わりになります
〜/CMS/製品/リスト
製品の外部で操作すると、次のようなURLが表示されます。
〜/ CMS / 00000000-0000-0000-0000-000000000000 / Product / List
別の注意:Prodcut / Listをルートとしてハードコーディングしようとしましたが、他のURLの前に一致することを期待して、CMS_productの前に配置しました。シンプルなものを見落としているような気がします。