asp.net-mvc - 在razor View 中生成绝对url

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

我想在 Razor View 中生成绝对网址

它可能看起来像这样:

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

我已经看到了很多这方面的尝试,但还没有找到能为我提供所需的完整链接的东西。

最佳答案

我不相信有办法使用 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>

要生成绝对 URL,我建议实现自定义扩展方法。

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 .

关于asp.net-mvc - 在razor View 中生成绝对url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26940751/

相关文章:

jquery - 使用ajax mvc更新数据时如何更新表中的行

asp.net-mvc-3 - .NET MVC 3 以编程方式设置布局

asp.net-mvc - 在system.web.optimization中自定义缓存清除

asp.net-mvc - 如何将文件内容添加到Viewbag mvc4

c# - 本地化 ASP.NET Identity 错误消息

c# - 无法将类型隐式转换为“System.Collections.Generic.List”

asp.net-mvc - ASP.NET MVC 3 - 发布前从集合中添加/删除

SQL从WebMatrix Razor语法中的一个POST将数据插入多个表

c# - 合并列表中的重复字符串并求和

asp.net - 出现错误 "the element ' httpCookies' 已被锁定在更高级别的配置中”