【问题标题】:Absolute (external) URLs with Html.ActionLink带有 Html.ActionLink 的绝对(外部)URL
【发布时间】:2011-06-21 13:22:31
【问题描述】:

我无法让 Html.ActionLink 生成绝对网址。

Html.ActionLink(DataBinder.Eval(c.DataItem, "Name").ToString(), DataBinder.Eval(c.DataItem, "Path").ToString())

这会正确地从我的模型中提取数据,但会将路径附加到当前页面的末尾,从而生成像“http://localhost:24590/www.google.com”这样的 URL

我怎样才能让它按我想要的方式工作?

【问题讨论】:

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


    【解决方案1】:

    这对我有用:

    <a href="http://@Model.URL">
        Click Here
    </a>
    

    【讨论】:

    • 这是正确答案。当尝试链接到外部资源(即,不在您的项目中的不同网站或文件)时,不需要 @Html.ActionLink 帮助器,它仅用于生成到项目中路由的相对链接。
    【解决方案2】:

    使用以http://开头的绝对网址。

    <a href="www.google.com"></a>
    

    会得到相同的结果,因为它是一个相对 url。

    【讨论】:

    • 不确定这如何回答问题。我遇到了同样的问题,不知道如何生成具有绝对路径的 url。例如,我尝试做类似 Html.ActionLink("test link", "google.com") 的事情,它会产生 Skrealin 抱怨的内容。然后,我尝试了 google.com">test link 它产生了相同的结果。那么,如何做到这一点呢?
    • 正如我在答案中所写,使用绝对 URL。 ActionLink 帮助器尝试为您的网站提供 URL,因此如果您提供相对路径,他必须认为它是您页面的一部分。您必须明确设置绝对 URL,这是通过在前面加上 http:// 来完成的。你应该使用Html.ActionLink("test link", "http://google.com")
    • 这是不正确的。Html.ActionLink() 仅生成相对于当前项目的路径,因此会将“google.com”附加到当前主机/URI 路径的末尾。
    猜你喜欢
    • 2010-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 2010-12-09
    • 1970-01-01
    相关资源
    最近更新 更多