【问题标题】:Using HTML.RoutLink to add onto the existing url使用 HTML.RoutLink 添加到现有 url
【发布时间】:2010-11-22 08:01:49
【问题描述】:

有没有办法使用 HTML.RouteLink() 添加到现有的 url。例如我有

<%: Html.RouteLink(link.Text, link.RouteValues) %>

我的控制器是 Pages,我的操作是一些字符串。所以生成的网址是

localhost/Page/somestring

这很好。但是,当我访问 http://localhost:1241/Admin/ 部分时,我会链接生成的 url

localhost/Admin/Page/somestring

代替

localhost/Page/somestring

这个 localhost/Page/somestring url 设置在我的 global.asx 文件中以路由查看页面,而 localhost/Admin/Page/somestring url 是路由到编辑页面。

我希望这是有道理的,感谢大家的帮助!

泰隆

这是我的两条路线,可以给你一些想法


routes.MapRoute(null,"Pages/{page}", new { controller = "Pages", action = "Page" });

routes.MapRoute("Edit Pages", "Admin/Page/{page}",new { controller = "Admin", action = "EditPage", id =UrlParameter.Optional });

【问题讨论】:

  • 你在说什么Admin 部分?这是如何在您的 global.asax 中设置的?你在使用区域吗?
  • 例如,我将登录到我的管理部分并被重定向到 url localhost/Admin。我在管理部分使用的导航部分视图与在前端部分使用的导航部分视图相同。我在上面编辑了我的帖子。

标签: c# asp.net asp.net-mvc


【解决方案1】:

您还没有真正提供足够的信息来彻底回答这个问题。据我了解,无论您是否在管理员中,您都有一部分使用相同的代码来生成 URL。但是您希望相同的代码根据您是否在管理员中生成不同的 URL。

这里的技巧是你需要路由值来匹配你想要匹配的路由的默认值。

在这种情况下,链接到非管理员:

Html.RouteLink(linkText, new {controller="Pages", action="Page", page = thePage})

但要链接到管理员版本

Html.RouteLink(linkText, new {controller="Admin", action="EditPage", page = thePage})

因此,您需要做的是确保部分获取正确的值,具体取决于它在哪个上下文中使用。

【讨论】:

  • 如何制作您自己的 RouteLink 方法版本并在内部检查 IsAuthenticated(我猜这会告诉您您是否在管理员中)并使用正确的 Controller 值在内部调用 RouteLink(页面或管理员)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-12
  • 1970-01-01
  • 2015-11-25
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多