【问题标题】:What does "~/" resolve to in ASP: the current folder or the root of the website?“~/”在 ASP 中解析为什么:当前文件夹还是网站的根目录?
【发布时间】:2012-07-05 03:12:12
【问题描述】:

在文件路径中使用 ~/ 会解析到当前文件夹或网站的根目录吗?

我有这样的文件结构:

\
->Folder
-->Page1.Aspx

->App_Themes
-->Theme1
--->Images
--->StyleSheet.css

->Includes
-->Footer.htm

Default.aspx
Default.master

我将我的 default.master 页面用于 Page1.aspx 和 default.aspx。母版页使用 <!-- #include file="includes/Footer.htm" --> 。然后在我的 Footer.html 中,我使用图像的路径,例如:~/App_Themes/Theme1/Images/Image1.png"。

图片将在default.aspx 中正常显示,但在Page1.aspx 中找不到。我以为 ~/ 在文件路径中使用时表示网站的根目录?

编辑:

我错了,它在 defaut.aspx 中也不起作用。有效的路径是:/App_Themes/Theme1/Images/Image1.png。

【问题讨论】:

  • 我建议不要使用服务器端包含。那是旧的 ASP 垃圾,不应该在 ASP.NET 中使用。
  • 应该改用什么?自定义 ascx 控件?
  • ASCX 控件、母版页...任何东西都比使用包含更好。母版页是跨所有页面共享内容的标准 .NET 方式。 msdn.microsoft.com/en-us/library/wtxbf3hh.aspx ASXC 控件是在页面内容中包含位的方式。
  • 听起来不错,我从来不知道#includes 这么糟糕。我只是想,因为我只是在我的母版页中#include html 段,所以没关系。谢谢,我会将我的#includes 切换到 ASCX 控件。
  • @Mausimo:如前所述,使用 UserControls (ASCX) 和/或母版页。大多数网站甚至会关闭 SSI。

标签: asp.net


【解决方案1】:

它解析为当前 Web 应用程序的根,它可能是也可能不是整个网站的根。

要了解区别,请参阅this article

作为一般规则,当您在 Visual Studio 中创建“网站”或“Web 应用程序”时,实际上是在使用 IIS 语言创建“Web 应用程序”。

为了进一步混淆水域,从概念上讲,网站的根目录本身就是一个 IIS“应用程序”,因此您可以将您的 Visual Studio 网站/Web 应用程序发布到您网站的根目录。在这种情况下,~/ 将引用站点的根目录。

但是,如果您有多个应用程序都在一个站点中运行,那么在每个站点中,~/ 将引用该应用程序的根目录。

例如,假设 MySite.com 有不同的应用程序

  • mySite.Com - Visual Studio 中的不同应用,具有一般网站内容。
  • mySite.Com/shop 有一个购物车。这是 Visual Studio 中一个独特的应用程序,也是一个独特的 IIS 应用程序。
  • MySite.Com/Support 包含一个单独的、独特的客户支持应用程序。提交工单、与现场接线员聊天等。

在上述所有内容中,mysite.com 是网站。但 /* 表示应用程序。 ~/ 将引用

  • mySite.Com/
  • mySite.Com/shop/

  • MySite.Com/Support/

分别

【讨论】:

  • 感谢您的链接和回答。帮了大忙!
猜你喜欢
  • 2020-03-09
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 2011-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
相关资源
最近更新 更多