默认图像没有显示在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" />
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事件中完成。