使用带有绝对路径的ActionLink

时间:2013-03-22 17:42:23

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

根据提供的答案:

Absolute (external) URLs with Html.ActionLink

我有以下ActionLink:

<li>@Html.ActionLink("ExternalLink", "http://google.com")</li> 

但我仍然得到'资源无法找到错误',其中包含:

请求的网址:/Home/http:/ google.com

将标记/ Home标记到绝对路径上。

更新:我希望连接一个外部URL(我自己的,在Web项目之外)并在控制器中连接一个ActionResult ..啊,是因为我正在使用HomeController,当我应该使用一个新的?

我做错了什么?

任何帮助,非常感谢。

2 个答案:

答案 0 :(得分:7)

你不需要Razor。只需使用标签。

<a href="http://google.com">Link to Google</a>

<强>更新

对于更复杂的场景,您可以编写一个简单的HTML帮助方法,如下所示:

public static class ExternalLinkHelper
{
    public static MvcHtmlString ExternalLink(this HtmlHelper htmlHelper, string linkText, string externalUrl)
    {
        TagBuilder tagBuilder = new TagBuilder("a");
        tagBuilder.Attributes["href"] = externalUrl;
        tagBuilder.InnerHtml = linkText;
        return new MvcHtmlString(tagBuilder.ToString());
    }
}

请确保在视图中引用此类的命名空间。

@Html.ExternalLink("Link to Google", "http://google.com")

答案 1 :(得分:1)

ActionLink不支持绝对网址。 “行动”这个名字让这个消失了。您需要将自己的扩展方法添加到HtmlHelper或自己编写标记。