如果图像坏了我想添加替代图像,我们也可以删除损坏的图像图标吗?这是我的代码:
<asp:ImageButton
AlternateText = " "
onerror = "imgError(this)"
ID = "ImageButton111"
runat="server"
Width = "140"
Height = "140"
CommandName = "image1"
CssClass = "imagetest"
CommandArgument = "image"
CausesValidation = "false"
ImageUrl='<%# "loadImage.ashx?RollNo=" + Eval("RollNO")%>'
/>
function imgError(image) {
image.onerror = "";
image.src = "~/images/no-hit.gif";
return true;
}
答案 0 :(得分:1)
我认为AlternateText本身是一个内置功能,用于在无法正确加载图像的情况下设置文本代替图像。
或者,如果您想要替代图像,请使用:
<img src="image.gif" onerror="changeImage('alternate_image.gif')">
并在javascript函数中设置替代图像:
function changeImage(altImage){
$(this).attr('src',altImage.toString());
}
希望有所帮助:)
答案 1 :(得分:0)
我将摆脱onerror事件并在CodeBehind中实现它。这样,如果禁用JavaScript,您仍将获得所需的结果。我使用了HttpWebRequest。它只检查HEAD,因此它实际上并没有下载文件,它只是检查图像是否可访问。
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ImageButton1.ImageUrl);
request.Method = "HEAD";
try
{
request.GetResponse();
}
catch
{
ImageButton1.ImageUrl = "yournewimage.jpg";
}
答案 2 :(得分:0)
您可以更改这样的数据列表标记,即创建图像的位置
<%
string filePath = "loadImage.ashx?RollNo=" + Eval("RollNo");
if (IsImageValid(filePath))
{
%>
<asp:ImageButton AlternateText=" " ID="ImageButton111" runat="server"
Width="140" Height="140" CommandName="image1" CssClass="imagetest" CommandArgument = "image"
CausesValidation="false" ImageUrl='<%# "loadImage.ashx?RollNo=" + Eval("RollNO")%>' />
<%}
else
{%>
<asp:ImageButton AlternateText=" " ID="ImageButton1" runat="server"
Width="140" Height="140" CommandName="image1" CssClass="imagetest" CommandArgument="image"
CausesValidation="false" ImageUrl="~/images/no-hit.gif" />
<%} %>
现在您将要做的是,如果图像被破坏,则创建不同的图像
可以像这样定义IsImageValid函数
public bool IsImageValid(string filename)
{
try
{
System.Drawing.Image newImage = System.Drawing.Image.FromFile(filename);
}
catch (OutOfMemoryException ex)
{
// Image.FromFile will throw this if file is invalid.
// Don't ask me why.
return false;
}
return true;
}
这一切都可以在OnItemDataBound事件中完成,即使更容易。