从 Razor Pages 中的标记获取页面 URL

Jon*_*ood 8 asp.net .net-core asp.net-core razor-pages

在 MVC 中,我认为我们曾经@Html.Url()从标记中获取页面的 URL。在 Razor Pages 中,此功能似乎不再可用。

Razor Pages 有一些很棒的标签助手,可以帮助创建页面链接。但是如果您想要一个页面 URL(例如来自 JavaScript)怎么办?Razor Pages 是否有用于获取 URL 字符串的工具?

Laz*_*iya 17

这将带来当前页面的 url:

@Url.RouteUrl(ViewContext.RouteData.Values);
Run Code Online (Sandbox Code Playgroud)

[更新]

上面的实现将返回当前页面的 url,不带QueryString值,例如/Users/Index

使用以下实现后包含QueryString值:?

@{
    var routeUrl = Url.RouteUrl(ViewContext.RouteData.Values);
    var qsPath = ViewContext.HttpContext.Request.QueryString.Value;
    var returnUrl = $"{routeUrl}{qsPath}";
}
Run Code Online (Sandbox Code Playgroud)

最终结果将包括路由和查询字符串值:

// returnUrl = "/Users/Index?p=1&s=5"
Run Code Online (Sandbox Code Playgroud)