0

画像が壊れている場合に別の画像を追加しようとしていますが、壊れた画像のアイコンを削除することはできますか? これが私のコードです:

<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;
}
4

3 に答える 3

1

AlternateText 自体は、画像を正しく読み込めなかった場合に画像の代わりにテキストを設定するための組み込み機能だと思います。

または、別の画像が必要な場合は、次を使用します。

<img src="image.gif" onerror="changeImage('alternate_image.gif')">

そして、javascript 関数で代替画像を設定します。

function changeImage(altImage){
$(this).attr('src',altImage.toString());
}

それが役に立てば幸い :)

于 2013-01-02T07:07:30.027 に答える
0

onerrorイベントを取り除き、CodeBehindに実装します。そうすれば、JavaScriptが無効になっている場合でも、目的の結果が得られます。HttpWebRequestを使用しました。HEADをチェックするだけなので、実際にファイルをダウンロードするのではなく、イメージにアクセスできるかどうかをチェックするだけです。

   HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ImageButton1.ImageUrl);
    request.Method = "HEAD";

    try
    {
        request.GetResponse();
    }
    catch
    {

        ImageButton1.ImageUrl = "yournewimage.jpg";
    }
于 2013-01-02T05:53:10.810 に答える
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 イベントでも簡単に実行できます。

于 2013-01-02T07:01:14.353 に答える