我在网站上显示图片列表时遇到问题。
使用此问题How do you display a list of images, from a folder on hard drive, on ASP.NET website?
我几乎只是复制了答案,因为这是我想要做的。但是,我最终得到了一堆没什么。 我在浏览器中检查了页面源,图片网址看起来正确
IE。
<a id="MainContent_RepeaterImages_Image_78"><img src="C:\Users\k\Galleries\Photos%20from%20the%20Final%20Conference\IMG_5962.jpg" alt="" />
代码背后的代码:
string[] filesindirectory = Directory.GetFiles(Server.MapPath("Galleries") + "\\Photos from the Final Conference");
List<String> images = new List<string>(filesindirectory.Count());
foreach (string item in filesindirectory)
{
images.Add(String.Format("~/Images/{0}", System.IO.Path.GetFileName(item)));
}
RepeaterImages.DataSource = images;
RepeaterImages.DataBind();
和asp:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<div id="test">
<asp:Repeater ID="RepeaterImages" runat="server">
<ItemTemplate>
<asp:HyperLink ID="Image" runat="server" ImageUrl='<%# Container.DataItem %>' />
</ItemTemplate>
</asp:Repeater>
</div>
关于我缺少什么的任何想法?
答案 0 :(得分:2)
接受的答案的第一句话说:
首先,您需要将要显示的图像放在网络树下。
除非图像位于Web应用程序文件夹中的文件夹中,否则它将无效。
请注意,2 nd 答案也注明了这一点。
如果你真的想使用物理路径,那么使用file:///方法作为Disappointment先生注意事项(请注意它需要是本地路径(对于客户端)但我并不是100%确定如果这适用于所有浏览器)。
答案 1 :(得分:2)
您需要使用存储在应用程序根目录下或文件下的文件的相对路径(即该Web应用程序的虚拟目录(根文件夹))。
在使用file:///
协议在本地打开网页文件本身的情况下,使用完整的物理文件名只会(据我所知)(并且“网址”可能需要遵守,太)。而且我认为我没有遇到过这样做的理由或需要 - 因为相对路径会以任何方式运作。
此外,代码似乎是矛盾的:你有一个原始的HTML元素(img
)定义了一个可能是硬编码的路径值(假设您不能以自然方式更新非服务器端控件)来自代码,就像使用服务器端控件一样 - 除非我对它如何从转发器呈现HyperLink
感到困惑。)您显示的生成路径的代码前缀为~/images
,但这并没有出现在前面提到的路径中 - 你确定这是所示代码结果的精确表示吗?您通常需要映射路径以获得此类输出,并且不太可能忽略指定路径的一部分。
答案 2 :(得分:0)
可能您的路径可能引用不正确,请尝试使用Server.MapPath()