【发布时间】:2016-05-05 21:41:13
【问题描述】:
我有一个 div <div runat="server" id="mugshots_container"></div>。我想用 Code Behind 中的 images 填充它。
这是我的代码:
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
var timer = new System.Threading.Timer((x) => { RefreshMugshots(); }, null, TimeSpan.Zero, TimeSpan.FromMinutes(5));
}
protected void RefreshMugshots()
{
DataTable dt = this.ExecSprocReturnDataTable(SPROC_MUGSHOTS_GET);
foreach (DataRow row in dt.Rows)
{
string identifier = row["identifier"].ToString();
HtmlImage img = mugshots_container.Controls.OfType<HtmlImage>()
.SingleOrDefault((x => x.Attributes["identifier"] == identifier));
if (img != null)
{
img.Src = ConvertByteArrayToBase64String(row["image"] as byte[]);
}
else
{
img = new HtmlImage() { Src = ConvertByteArrayToBase64String(row["image"] as byte[]) };
img.Attributes.Add("identifier", identifier);
mugshots_container.Controls.Add(img);
}
}
}
代码执行良好,HtmlImage 已添加到 mugshots_container,但我在页面上看不到图像。当我打开调试器时, div 仍然是空的。我做错了什么?
【问题讨论】:
-
如何强制页面在浏览器中刷新?您对
<div>所做的所有更改都发生在服务器上。页面加载后,浏览器与服务器断开连接,除非您使用 SignalR 推送或页面上的计时器拉取,否则您无法推送更改。 -
您无法以标准方式执行此操作,如果没有完整的回发,您的图像将保留在服务器中,而客户端将永远看不到它们。
-
您应该选择更新面板或客户端解决方案。
标签: c# asp.net code-behind