いくつかのルートを持つMVC3アプリがあります。それらのうちの2つは次のように定義されます。
routes.MapRoute(
null,
"System/{name}", // URL with parameters
new { controller = "Systems", action = "Index" } // Parameter defaults
);
routes.MapRoute(
null,
"Carrier/{name}", // URL with parameters
new { controller = "Carriers", action = "Index" } // Parameter defaults
);
今、私のメニューには、Url.Actionを使用して作成されたこれらのルートへの2つのリンクがあります。
Url.Action("Index","Systems")
Url.Action("Index","Carriers")
これで、アプリケーションを起動すると、すべてが正常に表示され、メニューのリンクがととして表示/System/
さ/Carrier/
れます。これが期待値です。
ただし、たとえば/System/MySystem
Webページで参照する場合でも、リンクが同じ場所を指している必要がありますが、現在はとを指しているようになってい/System/MySystem
ます/Carrier/MySystem
。
リンクがルート値の名前を使用しないようにするために多くのことを試みましたが、役に立ちませんでした。私が経験した最も奇妙なケースは、私がこれを試したときでした:
Url.Action("Index","Systems", new{name = (string)null})
リンクは次のように表示されます
/System?name=MySystem
ルート値の名前の値がこれらのリンクに干渉しないようにするための良い方法はありますか?