【发布时间】:2014-08-30 12:01:18
【问题描述】:
我想从数据库中检索图像并显示在 aspx 页面中。我使用 Linq 到 SQL。还有一个通用处理程序。
Handler2.ashx 代码:
public void ProcessRequest(HttpContext context)
{
if (context.Request.QueryString["id"] != null)
{
int id;
string sid = context.Request.QueryString["id"];
if (int.TryParse(sid, out id))
{
Stream strm = getImage(id);
byte[] buffer = new byte[4096];
int i = strm.Read(buffer, 0, 4096);
while (i > 0)
{
context.Response.OutputStream.Write(buffer, 0, 4096);
i = strm.Read(buffer, 0, 4096);
}
}
else
{
//
}
}
}
public Stream getImage(int id)
{
using (DummyDBEntities cntx = new DummyDBEntities())
{
var db = from c in cntx.Images
where c.imageId == id
select c.imageData;
MemoryStream ms = new MemoryStream();
byte[] byteArray = new byte[db.ToArray().Length];
ms.Write(byteArray, 0, db.ToArray().Length);
return new MemoryStream(byteArray);
}
}
当我单击时,Default.aspx 页面中的按钮控件重定向到 handler1.ashx。从数据库中获取图像的 id 并在 Default.aspx asp:image 控件中显示它
protected void btnGetID_Click(object sender, EventArgs e)
{
int id=Convert.ToInt32(txtGetID.Text);
Response.Redirect("Handler2.ashx?id="+id);
Image1.ImageUrl = '<%# "~/Handler2.ashx?id=" + Eval("imageData"); %>';
}
我应该如何编写 Eval 方法和查询字符串来将图像传递给 imageurl?
Image1.ImageUrl = '<%# "~/Handler2.ashx?id=" + Eval("imageData"); %>';
请帮忙,谢谢。
【问题讨论】:
-
如果你在重定向,你还能看到更新后的 Image1 吗?
-
Response.Redirect会将浏览器重定向到一个完全不同的页面。所以 Image1 将不可见。 -
首先它重定向到 Handler2.ashx 页面,将一些流转换为字节,然后从这里继续代码: Image1.ImageUrl = '';
-
你应该阅读
Response.Redirectmsdn.microsoft.com/en-us/library/ms524309(v=vs.90).aspx 特别是这部分code execution in the current page is terminated when the Redirect method is processed, so subsequent code in the page will also be ignored. -
Response.Redirect重定向浏览器,你不会在default.aspx了,它只会在屏幕上显示图像而不是别的。
标签: asp.net image eval generic-handler imageurl