我是ASP.NET的新手,我正在尝试将Web应用程序从使用硬编码的部署位置(即/base/path/index.aspx)转换为在运行时发现它们。如果我使用Response.Redirect()
,我可以将路径表示为'〜/ index.aspx',并且在运行时,ASP.NET将根据部署Web应用程序的位置构建正确的URL以发送重定向。 / p>
代码中有些地方动态生成Javascript和/或HTML,并作为响应的一部分发送到客户端以强制使用新窗口。在这些情况下,我不知道如何获取应在新窗口中打开的实际URL。在这种情况下使用〜不起作用,因为浏览器而不是服务器正在评估URL。 ASP.NET中是否有类或方法可以为我提供我正在寻找的URL?我会看自己,但我甚至不知道如何恰当地表达我的问题。
答案 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并构建您的页面。