在代码中获取页面的绝对URL

时间:2009-07-08 16:05:32

标签: asp.net vb.net url

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

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

4 个答案:

答案 0 :(得分:8)

您正在寻找VirtualPathUtility课程

http://msdn.microsoft.com/en-us/library/system.web.virtualpathutility.aspx

具体来说,您可以使用以下方法:

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

答案 1 :(得分:2)

你可以这样做:

<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>

答案 2 :(得分:1)

Tilde(〜)基本上是HttpRuntime.AppDomainAppVirtualPath的捷径。

答案 3 :(得分:0)

您可以使用Request.ApplicationPath并构建您的页面。