默认图像没有显示在ASP ImageField中

本文关键字:ASP ImageField 显示 图像 默认 | 更新日期: 2023-09-27 18:05:08

在我的asp.net gridview中有一个ASP ImageField,当图像未显示或损坏时,我需要显示默认图像,这里我使用NullImageUrl,但这不起作用。

我代码:

<asp:ImageField DataImageUrlField="FilePath" ControlStyle-Height="50" ControlStyle-Width="50" HeaderText="Image Preview" NullImageUrl="~/images/Defaultimg.png" />

默认图像没有显示在ASP ImageField中

Gridview图像标签

 <asp:Image class="fbimgsize" ImageUrl='<%# FormatURL(Convert.ToString(DataBinder.Eval(Container.DataItem, "picture"))) %>'
  runat="server" ID="imgUser" />
c#代码:

  public string FormatURL(string img)
    {
        try
        {
            if (Path.GetExtension(img).Equals(".jpg", StringComparison.InvariantCultureIgnoreCase))
            {
                return img;
            }
            else
            {
                return "images/noimage.jpg";
            }
        }
        catch (Exception)
        {
           return "images/noimage.jpg";
        }
    }

@KarthikManoharan的解决方案确实适用于本地图像。但是,如果您需要保留ImageFields或也需要检查远程图像,则必须在代码中添加几行javascript。只有当相应的绑定数据字段为空时,才会考虑NullImageUrl属性。它不检查图像url是否有效。

你可以这样做:

<asp:GridView runat="server" ID="mySuperGridView">
        <Columns>
            <asp:ImageField DataImageUrlField="ImageUrl" HeaderText="Image Preview" NullImageUrl="~/images/replacement.jpg" />
        </Columns>
    </asp:GridView>    
$(function() {
    $("#mySuperGridView").find("img").error(brokenImageHandler);
});
function brokenImageHandler(image, param1) {
    $(image.target).attr("src", "images/replacement.jpg");
}

请记住,此函数将替换gridview中所有损坏的图像。如果你想单独考虑你的ImageFields,你需要为你的ImageFields添加一个自定义属性。这可以在gridview的RowDataBound事件中完成。