我有一个带有多条路线的 MVC3 应用程序。其中两个定义如下:
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 创建的这些路由的链接:
Url.Action("Index","Systems")
Url.Action("Index","Carriers")
现在,当我启动应用程序时,一切似乎都很好,菜单中的链接显示为/System/
和/Carrier/
,这是预期值。
但是,当我浏览到例如/System/MySystem
在网页中时,我仍然希望链接指向同一个地方,但现在它们指向/System/MySystem
and /Carrier/MySystem
。
我已经尝试了很多方法来阻止链接使用路由值中的名称,但无济于事。我遇到的最奇怪的情况是当我尝试这个时:
Url.Action("Index","Systems", new{name = (string)null})
现在链接显示为
/System?name=MySystem
这里有什么好的方法来确保路由值中的名称值不会以任何方式干扰这些链接吗?