【问题标题】:Viewing photos when in a different folder to the images在与图像不同的文件夹中查看照片
【发布时间】:2017-09-26 22:11:30
【问题描述】:

我遇到问题的文件是我的 basket.aspx 文件,它位于我的“passwordProtected”文件夹中。在我的 basket.aspx 文件中,我的图像存储在 ../ 文件夹中。定义 imageurl 时,如何在 ASP.NET 中访问此文件夹?例如

    <asp:Image ID="image1" runat="server" ImageUrl='../<%# Eval("photo") %>'/>

因为上面的行不通..

【问题讨论】:

  • 我们可以看到代码隐藏,大概你是从数据库中获取图像?
  • @IrishChieftain 是的,我正在从数据库中获取图像。这种方式适用于我的产品页面(在带有图像的根目录中)。
  • 我对“密码保护”位感到困惑——只有登录的人才能看到这些图像吗?你的问题很模糊,缺少相关代码。
  • @irishcheiftain 只有登录的人才能看到他们的篮子。否则他们必须登录。还有什么其他代码是相关的。说吧。
  • @irishchieftain 当我将 basket.aspx 文件移动到根文件夹并从 eval 前面删除“../”时它可以工作

标签: asp.net imageurl


【解决方案1】:

我认为您所说的是图像位于包含basket.aspx 文件的目录上方的目录中。在 url 中,您通常不能像在本机文件系统中那样使用 ../ 来访问父目录。因此,最简单的做法是将 ImageUrl 设置为图像的根相对 url。

例如,如果basket.aspx 位于/dir1/dir2/basket.aspx 并且图像位于其上方的目录(即dir1)中,则设置ImageUrl='/dir1/&lt;%# Eval("photo") %&gt;' 应该可以工作,但正如@mason 在 cmets 中指出的那样设置ImageUrl='~/dir1/&lt;%# Eval("photo") %&gt;' 会更好,因为可以让您的网络应用程序支持嵌套在其他应用程序之下。

【讨论】:

  • /dir1/&lt;%# Eval("photo") 不是绝对 URL。这是一个“根相对 URL”。通常在 ASP.NET 中,应该避免使用“应用程序根相对 URL”,例如 ~/dir1/&lt;%# Eval("photo")
  • 我认为,如果您进行一些谷歌搜索,您会发现它更常被称为绝对 url,而不是应用程序根相对 url。 :-) 如果发布者希望能够将此 Web 应用程序嵌套在另一个 Web 应用程序的子文件夹中,那么您以 ~ 开头的观点是一个很好的选择。
  • 不,绝对 URL 绝对包含 URI 的所有部分,并且与任何东西都不相关。绝对 URL 将是 https://example.com/images.png。架构相对 URL 为 //example.com/images.png,根相对 URL 为 /images.png,应用程序根相对 URL(特定于 ASP.NET)为 ~/images.png。正确使用此术语非常重要,这样您就不会混淆他人并传播错误信息。请更新您的答案。
  • @mason - 通过进一步的解释,我可以看出你是正确的,你教会了我一些东西,谢谢。我已经更新了我的答案,并赞成你对我的解释。
  • 建议 ASP.NET 使用应用程序根相对 URL 仍然更好。这就是惯例,Visual Studio 模板使用应用程序根相对 URL,您可以与虚拟应用程序兼容,而无需遍历整个站点并更新 URL。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2014-10-30
  • 2013-02-17
  • 2012-04-22
相关资源
最近更新 更多