我试图用转发器显示我的数据库中的名称,描述和图片。 名称和说明可以正常工作,但图像不会显示。图像位于我项目的一个文件夹中,我正在尝试使用存储在数据库“path”列中的字符串来访问它们。
哦,但如果我查看浏览器的源代码,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>
和codebehind:
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();
}
(是的,我知道我的代码根本不安全。)
这是它在浏览器中的外观:
任何想法? :)
答案 0 :(得分:2)
您可以在Firebug或Chrome中运行它,看看是否找不到图像(404)及其路径。
答案 1 :(得分:2)
你的路径是C:\\Images\etc.
..?如果您获得"Not allowed to load local resource"
,,则应尝试使用相对路径的路径.. 如果您在网站中没有它们,则应将图像副本复制到网站并渲染该路径。您正面临安全问题。
答案 2 :(得分:2)
您收到的错误Not allowed to load local resource
听起来像是在尝试使用本地系统上的路径加载。尝试使用Server.MapPath
和文件的相对路径,例如:
Server.MapPath("~/images/my-image.jpg");