【问题标题】:ActionLink/RouteLink based on URL not Controller基于 URL 而非控制器的 ActionLink/RouteLink
【发布时间】:2010-11-05 13:08:17
【问题描述】:

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

.com/Object/375

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

.com/Admin/Object/375

无论您是否在管理部分,我都使用相同的用户控件,但它们都指向同一个控制器对象。我需要链接来维护该 URL 结构,而不是尝试将管理员用户踢回对象控制器。我目前正在使用路由名称方法,这些是我的路由名称(在 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 结构(有或没有管理员)正确创建 URL,并且路由将指向正确的控制器(两个 URL 相同)并且管理员特定的内容将是仅在“管理”部分(基于 URL)注入页面。

【问题讨论】:

  • 澄清一下,您希望链接指向同一个控制器而不考虑用户角色/权限,而是指向不同的操作方法?
  • 它们指向同一个控制器(路由处理这个),我只需要根据当前的 URL 结构创建正确的 URL。因此,如果他们在管理部分,他们将继续留在管理部分

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


【解决方案1】:

总结一下,使用 ViewBag 可能是一个更好的主意,因为使用 URL 段可能会导致意外错误,尤其是在您移动控件或视图时。

【讨论】:

    猜你喜欢
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多