【问题标题】:Get page URL from markup in Razor Pages从 Razor Pages 中的标记获取页面 URL
【发布时间】:2020-09-18 00:18:51
【问题描述】:

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

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

【问题讨论】:

    标签: asp.net asp.net-core .net-core razor-pages


    【解决方案1】:

    这会带来当前页面的url:

    @Url.RouteUrl(ViewContext.RouteData.Values);
    

    [更新]

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

    要在? 之后包含QueryString 值,请使用以下实现:

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

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

    // returnUrl = "/Users/Index?p=1&s=5"
    

    【讨论】:

      【解决方案2】:

      上述答案的一些附加信息。如果您正在寻找查询字符串组件的解析值,您可以使用 Request 对象的“Query”成员并传入查询参数的名称,例如

      var returnUrl = ViewContext.HttpContext.Request.Query["returnUrl"].ToString();

      如果您在查询字符串中通过名称“returnUrl”传递了参数,则返回其值。如果它不存在,您将得到一个空字符串。

      我发现这很有帮助。我知道这不是确切的问题,但我想我会分享这些信息,这可能对像我这样没有经验的人有所帮助。

      【讨论】:

      • 这实际上更多是关于代码背后而不是来自标记。这是关于读取查询参数,而不是获取当前页面的 URL。
      猜你喜欢
      • 1970-01-01
      • 2021-11-21
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-11
      • 2022-01-19
      相关资源
      最近更新 更多