我想在剃刀视图中生成一个绝对的Url
它可能看起来像这样:
@Html.ActionLink("Register Now", "action", "controller",
new { area = "Area", id = @Model.Id }, null)
我已经看过很多尝试,但没有找到能给我提供所需链接的东西。
答案 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。