【问题标题】:Generate full URL in MVC? [duplicate]在 MVC 中生成完整的 URL? [复制]
【发布时间】:2012-04-24 15:13:50
【问题描述】:

可能重复:
How to I find the absolute url of an action in ASP.NET MVC?
Asp MVC Action link absolute url

嗨,

是否有一种简单的方法可以为特定操作生成完整的 URL?我试过这个:

urlHelper.Action("Action", "Controller")

但这确实会生成一个“\”。

致以最诚挚的问候

编辑 1:我已经尝试过了:

urlHelper.Action("List", "Ad", null, "http"); 

但它只返回:localhost:16055。我期待类似 localhost:16055/Ad/List 的东西?

【问题讨论】:

  • 这是在视图的上下文中,还是在控制器代码中?
  • 只需添加主机/协议信息?

标签: c# asp.net-mvc


【解决方案1】:

使用 Html.ActionLink("Link Title", "Action", "Controller")

要生成完整链接,请使用:

@Html.ActionLink("Link Title", "Action", "Controller", "http", "www.mysampledomain.com", 
                 "_blank", new {id = paramValue}, new { @class="someClass" })

这是具有您可以指定的所有参数的扩展重载。看看这篇 MSDN 文章http://msdn.microsoft.com/en-us/library/dd492938.aspx

要从 Controller 生成,请使用以下代码:

var url = UrlHelper.GenerateUrl(null, "MyAction", "MyController", "http", "www.mydomain.com", String.Empty, null, RouteTable.Routes, this.ControllerContext.RequestContext, false);

url 变量将包含您的 URL 的字符串表示形式。您可以将其存储在 ViewBag 中,如下所示:

ViewBag.MyUrl = UrlHelper.GenerateUrl(null, "MyAction", "MyController", "http", "www.mydomain.com", String.Empty, null, RouteTable.Routes,
                                        this.ControllerContext.RequestContext, false);

从视图称它为:

@ViewBag.MyUrl

应该是这样的。

【讨论】:

  • 我如何通过控制器动作做到这一点?
  • Html.ActionLink 生成一个链接。如果您想要完整的 URL,请使用 Url 帮助程序 Url.Action。该方法的其中一个重载允许您指定架构,这样做会生成一个完全限定的 URL,例如 localhost:1234/controller/action
  • 不一定。 Html.ActionLink 有一个重载,也可以创建一个完整的链接。
  • 您打算如何处理控制器中“链接”的 HTML 代码?不同之处在于 Html.ActionLink 为 Text 生成 HTML,而 Url.Action 生成 URL 字符串
  • @NickBork,我不确定我是否理解你的问题。
【解决方案2】:

Url.action 生成一个相对的 url。要生成绝对网址,您可以查看:How do I find the absolute url of an action in ASP.NET MVC?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 2010-12-28
相关资源
最近更新 更多