图像没有显示

时间:2011-11-24 15:46:12

标签: c# asp.net lightbox

我在网站上显示图片列表时遇到问题。

使用此问题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>

关于我缺少什么的任何想法?

3 个答案:

答案 0 :(得分:2)

接受的答案的第一句话说:

  

首先,您需要将要显示的图像放在网络树下。

除非图像位于Web应用程序文件夹中的文件夹中,否则它将无效。

请注意,2 nd 答案也注明了这一点。


如果你真的想使用物理路径,那么使用file:///方法作为Disappointment先生注意事项(请注意它需要是本地路径(对于客户端)但我并不是100%确定如果这适用于所有浏览器)。

答案 1 :(得分:2)

您需要使用存储在应用程序根目录下或文件下的文件的相对路径(即该Web应用程序的虚拟目录(根文件夹))。

在使用file:///协议在本地打开网页文件本身的情况下,使用完整的物理文件名只会(据我所知)(并且“网址”可能需要遵守,太)。而且我认为我没有遇到过这样做的理由或需要 - 因为相对路径会以任何方式运作。

此外,代码似乎是矛盾的:你有一个原始的HTML元素(img)定义了一个可能是硬编码的路径值(假设您不能以自然方式更新非服务器端控件)来自代码,就像使用服务器端控件一样 - 除非我对它如何从转发器呈现HyperLink感到困惑。)您显示的生成路径的代码前缀为~/images,但这并没有出现在前面提到的路径中 - 你确定这是所示代码结果的精确表示吗?您通常需要映射路径以获得此类输出,并且不太可能忽略指定路径的一部分。

答案 2 :(得分:0)

可能您的路径可能引用不正确,请尝试使用Server.MapPath()

请查看有关ASP.NET Web Project Paths

的文档