我正在尝试在eval转发器中显示图像,但它不起作用。当我把简单的div而不是asp:Repeater我得到图像路径。 (我对SQL方面没有问题)
有谁知道这段代码有什么问题?
感谢。
<div class="wrapper">
<asp:Repeater runat="server" ID="Repeater1">
<ItemTemplate>
<asp:Image ID="Image1" ImageUrl="<%# Eval("PresidentPhotoPath") %>" runat="server" />
</ItemTemplate>
</asp:Repeater>
</div>
SqlConnection cnn = new SqlConnection("Initial Catalog=whitehouse;Data Source=localhost;Integrated Security=SSPI;");
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
cnn.Open();
SqlCommand cmd = new SqlCommand("SELECT PresidentPhotoPath FROM presidents", cnn);
SqlDataReader dr = cmd.ExecuteReader();
Repeater1.DataSource = dr;
Repeater1.DataBind();
cnn.Close();
}
}
答案 0 :(得分:2)
这里的ImageUrl
语法错误:
ImageUrl="<%# Eval("PresidentPhotoPath") %> "
双引号内有双引号,将外引号更改为单引号,如下所示:
ImageUrl='<%# Eval("PresidentPhotoPath") %>'
至于在文件名之前添加Images/
的问题,我建议使用代码隐藏方法为您构建字符串,如下所示:
protected string BuildPath(string photoPath)
{
return "Images/ + photoPath;
}
注意:考虑将这个命名比
BuildPath
更有用,因为这是非常通用的,只是选择了这个名称,因为没有更好的想法立即浮现在脑海中。
现在在你的标记中你可以调用方法,如下所示:
ImageUrl='<%# BuildPath(Eval("PresidentPhotoPath")) %>'
我推荐这种方法的原因如下:
Eval()
值的方法调用