gpt4 book ai didi

c# - asp.net 中的替代图像显示

转载 作者:行者123 更新时间:2023-11-30 20:03:50 25 4
gpt4 key购买 nike

我正在尝试提供替代图像,因为一些图像已损坏且无法显示,我尝试使用 js 但没有成功,因此需要有关如何执行相同操作的帮助和建议。该场景是在页面加载时,学生的信息被绑定(bind)到 DataList,并基于它的图像由 GetImage 类从另一个表中提取,但问题是某些图像已损坏,因此我想显示另一个虚拟图像。我使用 CSS 更改了 BG 图像,但效果不如预期。

    <asp:DataList ID="DataList1" CssClass="slider" r RepeatColumns="6" RepeatDirection="Vertical" runat="server" OnEditCommand="DataList1_EditCommand" OnItemCommand="DataList1_ItemCommand">
<ItemTemplate>
<ul>
<li><a class="info" href="#">
<asp:ImageButton CssClass="imagetest" AlternateText=" " ID="Image1" name="mybutton" runat="server" Width="140" Height="140" CommandName="image" OnLoad="changeImage();" CommandArgument="image" CausesValidation="false" ImageUrl='<%# "GetImage.aspx?source=" + Eval("city") +"&RollNo="+ Eval("RollNo") +"&state="+ Eval("state")+"&fname="+Eval("FirstName") +"&lname=" + Eval("LastName") %>'
</li>
</ul>
</ItemTemplate>
</asp:DataList>


protected void Page_Load(object sender, EventArgs e)
{
string city = Request.QueryString["city"];
string RollNo = Request.QueryString["RollNo"];
string state = Request.QueryString["state"];
string fname = Request.QueryString["fname"];
string lname = Request.QueryString["lname"];
DataAccess dao = new DataAccess();
dao.openConnection();
byte[] arr = dao.GetPicture(city, RollNo, state, fname, lname);
//Response.BinaryWrite(arr);
try
{
Response.BinaryWrite(arr);
}
catch (Exception) { }
}

最佳答案

您可以使用图像的 onerror 并在未加载时显示替代图像。

这是一个带有一个 img 标签的基本示例,在 asp.net 上你可以放置类似的 onerror 调用

<img id="one" src="image.gif" onerror="imgError(this)">​

和javascript

function imgError(me)
{
// place here the alternative image
var AlterNativeImg = "/images/emptyimage.gif";

// to avoid the case that even the alternative fails
if(AlterNativeImg != me.src)
me.src = AlterNativeImg;
}

并直播:http://jsfiddle.net/DxN69/2/还有http://jsfiddle.net/DxN69/3/

最后:http://jsfiddle.net/DxN69/4/

在 asp.net 图像按钮上

你只需在你的 asp.net 标签上添加 onerror="imgError(this)" 为:

<asp:ImageButton ID="ImageButton1" runat="server" onclick="ImageButton1_Click" ImageUrl="image.jpg" onerror="imgError(this)" />

即使图像按钮呈现为 input,最终结果也是相同的。

后台代码发送图片

在您上次更新后很明显您在尝试将页面作为图像发送时犯了一个大错误,您甚至没有更改它的 ContentType。所以使用 handler,例如创建一个名为 loadImage.ashx 的新处理程序,然后将您的代码编写为:

   public void ProcessRequest(HttpContext context)
{
// this is a header that you can get when you read the image
context.Response.ContentType = "image/jpeg";
// cache the image - 24h example
context.Response.Cache.SetExpires(DateTime.Now.AddHours(24));
context.Response.Cache.SetMaxAge(new TimeSpan(24, 0, 0));
// render direct
context.Response.BufferOutput = false;

// load here the image as you do
....

// the size of the image
context.Response.AddHeader("Content-Length", imageData.Length.ToString());
// and send it to browser
context.Response.OutputStream.Write(imageData, 0, imageData.Length);
}

你的电话会是这样的:

<asp:ImageButton CssClass="imagetest" AlternateText=" " ID="Image1" name="mybutton" runat="server" Width="140" Height="140" CommandName="image" OnLoad="changeImage();" CommandArgument="image" CausesValidation="false" ImageUrl='<%# "loadImage.ashx?source=" + Eval("city") +"&RollNo="+ Eval("RollNo") +"&state="+ Eval("state")+"&fname="+Eval("FirstName") +"&lname=" + Eval("LastName") %>'

现在在这里您可以仔细检查图像是否存在,如果不存在则发送一些默认图像。

关于c# - asp.net 中的替代图像显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14100618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com