【发布时间】:2012-02-06 21:52:56
【问题描述】:
我很好奇这是否可能,或者我怀疑,设计上不可能。 在 ASP.NET MVC 项目中,我有多个这样的路由:
new Route(
url, // This can be arbitrary
new RouteValueDictionary {
{"area", "MyArea"},
{"controller", "MyController"},
{"action", "Index"}
},
new RouteValueDictionary(),
new RouteValueDictionary {
{"area", "MyArea"},
},
new MvcRouteHandler()))
我想在 MyController 的操作使用的 (Razor) 视图中生成 url(或链接)。这些 url 应该指向 MyController 的另一个动作。
现在的问题是,有多个类似上面的路由注册在不同的 url 下,所以只需使用当前路由值调用 Html.ActionLink() 或 Url.Action() 会产生一个指向路由首先匹配的 url 的链接它。这不一定是当前调用操作的 url。
所以基本上我想要的是采用当前路线并用另一条路线代替行动。我找不到任何方法来做到这一点。 url 可以是任意的,但如有必要,可以应用约束,例如这样 url 必须包含一个操作令牌。实际上它们目前都这样做,所以 url 具有以下结构:
/AnotherArea/SubSegment/{action} // Routes point from other areas to MyArea/MyController
这些 url 存在于视图的 Html.ViewContext.RouteData.Route.Url 中,因此在生成新 url 时应该以某种方式更改操作令牌。 (嗯,可以通过字符串替换来做到这一点,但我想如果有解决方案,它应该比这更好。) 感谢您的宝贵时间!
【问题讨论】:
-
我习惯了一个段落换行,对不起。添加了三个新的:-)。
标签: c# asp.net-mvc asp.net-mvc-routing