2

我试图用转发器从我的数据库中显示名称、描述和图片。名称和描述可以正常工作,但图像不会显示。这些图像位于我项目的一个文件夹中,我正在尝试使用存储在数据库“路径”列中的字符串来访问它们。

哦,但是如果我查看浏览器的源代码,src="" 看起来不错,如果我将 src 粘贴到它,我什至可以在浏览器中查看图片。

这是我的代码:

<head runat="server">
<title></title>

<style type="text/css">
    .bilder {width:300;
             height:200;
             margin: 10px;
             border: 1px solid black;
             }
</style>

</head>
<body>
<form id="form1" runat="server">

<div>
    <asp:Repeater runat="server" ID="minRepeater">

        <ItemTemplate>
            <div class="wrapper">
                <h1><%# DataBinder.Eval(Container.DataItem, "Name") %></h1>
                <span id="desc"><%# DataBinder.Eval(Container.DataItem, "Description") %></span><br />
                <img src="<%# DataBinder.Eval(Container.DataItem, "Path") %>" alt="test" class="bilder" />
                <asp:Image ID="Image1" CssClass="bilder" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "Path")%>' runat="server" />
            </div>
        </ItemTemplate>
    </asp:Repeater>
</div>

和代码隐藏:

protected void Page_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection();
        con.ConnectionString = connectionstring;

        SqlCommand com = new SqlCommand();
        com.CommandText = "SELECT * FROM Pictures";
        com.Connection = con;

        SqlDataAdapter ad = new SqlDataAdapter();
        ad.SelectCommand = com;

        DataTable dt = new DataTable();
        ad.Fill(dt);

        Response.Write(dt.Rows.Count);

        minRepeater.DataSource = dt;
        minRepeater.DataBind();
    }

(是的,我知道我的代码不安全。一点也不。)

这是它在浏览器中的外观: 在此处输入图像描述

有任何想法吗?:)

4

3 回答 3

2

您可以在 Firebug 或 Chrome 中运行它,看看是否找不到图像 (404) 及其路径。

于 2012-04-18T17:45:44.210 回答
2

你的路径像C:\\Images\etc...吗?如果你得到了"Not allowed to load local resource"你应该用相对路径尝试你的路径。如果你在网站中没有它们,你应该将图像复制到站点并呈现该路径。您正面临安全问题。

于 2012-04-18T17:54:19.933 回答
2

您收到的错误Not allowed to load local resource听起来像是您正在尝试使用本地系统上的路径进行加载。尝试使用Server.MapPath文件的相对路径,例如:

Server.MapPath("~/images/my-image.jpg");
于 2012-04-18T17:56:36.407 回答