如何通过代字号使用相对路径命名法时获取完整的URL字符串?例如,如果我想使用相对路径引用我视图中的某些内容...
~/images/mylogo.jpg
我想获得完整的网址,以便最终看起来像......
https://myserver:8081/images/mylogo.jpg
需要填充Open Graph的元标记。我想用...
<meta property="og:image" content="@Url.Content("~/images/mylogo.jpg")" />
...但这只会产生导致......的相对路径。
<meta content="/images/mylogo.jpg" property="og:image">
详细信息 - 需要检测是否使用了SSL。需要确定当前端口和主机名...
答案 0 :(得分:2)
Getting absolute URLs using ASP.NET Core MVC 6处可能的重复答案非常相似,但没有解决波浪号的使用问题。对于代字号,我使用了URL Helper'Content'方法。为了完整性,这里是我降落的地方......
using Microsoft.AspNetCore.Mvc;
namespace testProject.Utilities
{
public static class MVCExtensionMethods
{
public static string BaseUrl(this IUrlHelper helper)
{
var url = string.Format("{0}://{1}", helper.ActionContext.HttpContext.Request.Scheme, helper.ActionContext.HttpContext.Request.Host.ToUriComponent());
return url;
}
public static string FullURL(this IUrlHelper helper, string virtualPath)
{
var url = string.Format("{0}://{1}{2}", helper.ActionContext.HttpContext.Request.Scheme, helper.ActionContext.HttpContext.Request.Host.ToUriComponent(), helper.Content(virtualPath));
return url;
}
}
}
@using testProject.Utilities
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta property="og:url" content="@Url.BaseUrl()" />
<meta property="og:type" content="website" />
<meta property="og:title" content="@ApplicationConstants.ApplicationTitle" />
<meta property="og:description" content="@ApplicationConstants.TagLine" />
<meta property="og:image" content="@Url.FullURL("~/images/logo-black.png")" />
<title>@ApplicationConstants.ApplicationTitle</title>
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
@Html.ApplicationInsightsJavaScript(TelemetryConfiguration)
</head>
<body>
</body>
</html>
MVC有两种帮助程序--HTML帮助程序和URL帮助程序。我在尝试使用HTML帮助程序时获取URL。本来应该使用URL帮助程序。可能的双重答案指示我查看URL帮助程序。它没有显示使用波浪号虚拟目录命名法...