我有一个转发器控件,在ItemTemplate下,我有Image控件。无论如何旧的
如何以编程方式设置ImageUrl?
无论如何,我的旧HTML代码是这样的:
<ItemTemplate> <img src="<%# Eval("ImageSource") %>" alt="" /> </ItemTemplate>
但我想检查目录中是否存在图像,然后我可以设置临时图像。
我有一个代码但是......它不是真的有用,所以没有在这里展示它的感觉。你们能帮助我吗?我应该使用ItemCreated或ItemDataBound事件吗?
答案 0 :(得分:4)
在模板的xml端,您需要直接调用方法。
<asp:Image runat="server" ID="myImg" ImageUrl='<%# MyImageUrlFunction(Eval("DataFieldName").ToString()); %>' />
您需要在公开定义的代码中使用相应的方法:
public string MyImageUrlFunction(string field)
{
// put some logic here to determine url
return imageUrl;
}
答案 1 :(得分:3)
在ItemDataBound
中,执行以下操作:
protected void rpt_ItemDataBound(object sender, RepeaterEventArgs e)
{
HtmlImage img = (HtmlImage)e.Item.FindControl("img");
string imageUrl = (string)DataBinder.Eval(e.Item.DataItem, "ImageSource");
if (File.Exists(imageUrl))
img.Src = imageUrl;
}
那是System.Web.UI.HtmlControls.HtmlImage
,System.Web.UI.DataBinder
和System.IO.File
。
答案 2 :(得分:1)
的ItemDataBound。您可以通过当前项的findcontrol事件获取控件引用,然后检查图像是否存在。您可以使用Server.MapPath(“〜/ images / test.png”)获取文件路径,如果没有,请注入自己的文件路径。
您还可以使用客户端标记可以调用的公共方法,传入URL,并提供默认值(如果不存在)。
HTH。
答案 3 :(得分:0)
<ItemTemplate>
<asp:Image ImageUrl='<%# System.IO.File.Exists(Eval("ImageSourceProperty").ToString()) ? Eval("ImageSourceProperty").ToString() : TemporaryImagePath %>' runat="server" />
</ItemTemplate>
答案 4 :(得分:0)
表示错误
服务器标签格式不正确
您应该删除代码中的额外空格!
<%# System.IO.File......%>
should be <%#System.IO.File......%>