【问题标题】:Getting absolute URL to page in code在代码中获取页面的绝对 URL
【发布时间】:2010-11-09 02:25:02
【问题描述】:

我是 ASP.NET 的新手,正在尝试将 Web 应用程序从使用硬编码的部署位置(即 /base/path/index.aspx)转换为在运行时发现它们。如果我使用Response.Redirect(),我可以将路径表示为“~/index.aspx”,并且在运行时,ASP.NET 将构建正确的 URL,以根据 Web 应用程序的部署位置将重定向发送到。

在代码中的某些地方动态生成 Javascript 和/或 HTML,并将其作为响应的一部分发送到客户端以强制打开新窗口。在这些情况下,我不知道如何获取应该在新窗口中打开的实际 URL。在这种情况下使用 ~ 不起作用,因为 URL 是由浏览器而不是服务器评估的。 ASP.NET 中是否有一个类或方法可以提供我正在寻找的 URL?我会看自己,但我什至不知道如何正确表达我的问题。

【问题讨论】:

    标签: asp.net vb.net url


    【解决方案1】:

    VirtualPathUtility class 是您正在寻找的。​​p>

    具体可以使用这些方法:

    VirtualPathUtility.ToAbsolute("~/");
    VirtualPathUtility.ToAppRelative("~/");
    

    【讨论】:

    • 非常感谢。我总是忘记那个类的名字是什么
    【解决方案2】:

    波浪号 (~) 基本上是HttpRuntime.AppDomainAppVirtualPath 的快捷方式。

    【讨论】:

      【解决方案3】:

      你可以这样做:

      <head runat="server">
          <title>Untitled Page</title>
          <script type="text/javascript">
          var url = '<%= ResolveUrl("~/path/some_page.aspx") %>';
          window.open(url, 'name');
          </script>
      </head>
      <body>
          <form id="form1" runat="server"></form>
      </body>
      </html>
      

      【讨论】:

        【解决方案4】:

        您可以使用 Request.ApplicationPath 并以自己的方式访问页面。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-05-06
          • 2010-09-10
          • 2015-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-02
          相关资源
          最近更新 更多