我正在使用我正在建设的博客上的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>

当前回答

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

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

其他回答

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

public static string GetCurrentWebsiteRoot()
{
    return HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
}

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

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

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

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

我最喜欢的…

Url.Content(Request.Url.PathAndQuery)

或者只是……

Url.Action()