如何获取 ASP.NET Core Razor 页面中的完整 URL?

Ali*_*EXE 13 c# asp.net asp.net-core razor-pages

我想要获取完整的 URL,而不仅仅是Path、 、Query和 not RouteValues

整个 URL 的原始形式。

如何在 ASP.NET Core Razor Pages 中执行此操作?

hal*_*ldo 17

您可以使用UriHelper扩展方法GetDisplayUrl()GetEncodedUrl()从请求中获取完整的 URL。

获取显示网址()

以完全未转义的形式返回请求 URL 的组合组件(查询字符串除外),仅适合显示。此格式不应在 HTTP 标头或其他 HTTP 操作中使用。

获取编码网址()

以适合在 HTTP 标头和其他 HTTP 操作中使用的完全转义形式返回请求 URL 的组合组件。

用法:

using Microsoft.AspNetCore.Http.Extensions;
...
string url = HttpContext.Request.GetDisplayUrl();
// or
string url = HttpContext.Request.GetEncodedUrl();
Run Code Online (Sandbox Code Playgroud)

  • 在 **.Net 6** 上工作,在 Razor Page cshtml `<meta property="og:url" content="@(ViewContext.HttpContext.Request.GetDisplayUrl())">` 中获取 **完整 URL** (2认同)

小智 10

你可以用这种方法来做。在.net core

@using Microsoft.AspNetCore.Http
@{
    string url = Context.Request.Path;
}
Run Code Online (Sandbox Code Playgroud)


Yiy*_*You 7

您可以尝试使用HttpContext.Request.Scheme + HttpContext.Request.Hostget https://localhost:xxxx,然后使用HttpContext.Request.Path + HttpContext.Request.QueryStringget 获取路径并查询:

var request = HttpContext.Request;
var _baseURL = $"{request.Scheme}://{request.Host}";
var fullUrl = _baseURL+HttpContext.Request.Path + HttpContext.Request.QueryString;
Run Code Online (Sandbox Code Playgroud)


Ama*_*l K 5

您可以使用PageLink方法来IUrlHelper获取页面的绝对 URL。

在页面处理程序(或控制器)中,IUrlHelper可以通过属性访问Url

public async Task<IActionResult> OnPostAsync()
{
    string url = Url.PageLink("/PageName", "PageHandler", routeValues);
    ...
}
Run Code Online (Sandbox Code Playgroud)

如果您想生成控制器操作的 URL,请使用ActionLink

适用于 ASP.NET Core 3.0 及更高版本。