我正在使用我正在建设的博客上的Facebook评论插件。它有一些FBXML标签,由页面上引用的facebook javascript解释。

这一切都很好,但我必须将当前的、完全限定的URL传递给插件。

<div style="width: 900px; margin: auto;">
    <div id="fb-root"></div>
    <fb:comments href="URL HERE" num_posts="10" width="900"></fb:comments>
</div>

获取当前页面URL的最佳方法是什么?请求URL。

解决方案

下面是我的解决方案的最终代码:

<fb:comments href="@Request.Url.AbsoluteUri" num_posts="15" width="900"></fb:comments>

当前回答

我也在寻找这个Facebook的原因,到目前为止,没有一个答案是必要的,或者太复杂了。

@Request.Url.GetLeftPart(UriPartial.Path)

获取“不包含”查询字符串的完整协议、主机和路径。如果您使用的不是默认的80,也包括端口。

其他回答

您可以使用Request。RawUrl Request.Url。OriginalString, Request.Url.ToString()或Request.Url.AbsoluteUri。

在其他答案中没有提到的一件事是大小写敏感性,如果它将在多个地方被引用(在最初的问题中没有,但值得考虑,因为这个问题出现在许多类似的搜索中)。根据其他答案,我发现以下方法最初对我有用:

Request.Url.AbsoluteUri.ToString ()

但为了更可靠,这就变成了:

.ToLower Request.Url.AbsoluteUri.ToString () ()

然后对于我的要求(检查网站正在访问的域名并显示相关内容):

.ToLower Request.Url.AbsoluteUri.ToString () () .Contains(“xxxx”)

对我来说,问题是当我试图在控制器的构造函数中访问HTTPContext时,HTTPContext还没有准备好。当移动到索引方法,它工作:

var uri = new Uri(Request.Url.AbsoluteUri);
url = uri.Scheme + "://" + uri.Host + "/";enter code here
Request.Url.PathAndQuery

应该工作得很好,特别是如果你只想要相对Uri(但保持查询字符串)

这对我来说适用于Core 3.0的完整URL:

$"{Request.Scheme}://{Request.Host.Value}{Request.Path.Value}"