ActionLink / RouteLink基于URL而非Controller

时间:2010-11-05 13:08:18

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-routing

我有一个使用以下结构的控制器:

.com/Object/375

但是,当我访问特殊管理员权限时,我也可以使用以下URL

.com/Admin/Object/375

无论您是否在管理部分,我都使用相同的用户控件,但它们都指向相同的Controller Object 。我需要链接来维护该URL结构,而不是试图将Admin用户踢回Object控制器。我目前正在使用路由名称方法,其中这些是我的路由名称(在global.asax中):

"Admin/-Object"
"Object/-Object"
"Object-Object"

这些路线名称包含以下路线:

Admin/Object, Admin/Object/555, Object, Object/323

然后我在路线链接中使用以下内容

Html.RouteLink(id, Request.Url.Segments[1] + "-Object", new { id = id })

这很好用,但有一种奇怪的气味 - 还有其他想法吗?

澄清:我需要根据当前的URL结构(有或没有Admin)正确创建URL,路由将指向正确的控制器(两个URL都相同),管理员特定的内容将是仅在管理部分(基于URL)注入页面。

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,使用ViewBag可能是一个更好的主意,因为使用URL段可能会导致意外错误,特别是如果您移动控件或视图。