在剃刀视图中生成绝对URL

时间:2014-11-14 23:50:23

标签: asp.net-mvc asp.net-mvc-4 razor

我想在剃刀视图中生成一个绝对的Url

它可能看起来像这样:

@Html.ActionLink("Register Now", "action", "controller", 
      new { area = "Area", id = @Model.Id }, null)

我已经看过很多尝试,但没有找到能给我提供所需链接的东西。

1 个答案:

答案 0 :(得分:4)

我不相信有一种方法可以使用Html.ActionLink生成带有绝对URL的链接。例如,使用问题中的Html.ActionLink将生成以下HTML输出:

@Html.ActionLink("Register Now", "Action", "Controller", new { @area = "Area", @id = Model.Id}, null)
// output: <a href="/Area/Controller/Action/{Model.Id}">Register Now</a>

要生成绝对网址,我建议您实施自定义扩展方法。

public static string AbsoluteActionUrl(this UrlHelper url, string actionName, string controllerName, object routeValues)
{
    string scheme = url.RequestContext.HttpContext.Request.Url.Scheme;
    return url.Action(actionName, controllerName, routeValues, scheme);
}

当然,您必须自己编写HTML标记并使用扩展名生成href属性的URL,如下所示:

<a href="@Url.AbsoluteActionUrl("Action", "Controller", new { @Area = "Area", @id = Model.Id})">Register Now</a>

您不必创建自定义扩展方法,但是在使用Url.Action时需要使用魔术字符串来指定方案。

上面使用的Url.Action重载的MSDN文档可用here。还有other overloads available