从Code Behind添加图像到div

时间:2016-05-05 13:14:32

标签: c# asp.net code-behind

我有 div vec[j] = new int[n]。我想用Code Behind中的 images 填充它。

这是我的代码:

<div runat="server" id="mugshots_container"></div>

代码执行正常, HtmlImage 已添加到 mugshots_container 但我无法在页面上看到图像。当我打开调试器时, div 仍为空。我做错了什么?

2 个答案:

答案 0 :(得分:2)

请求完成后,更改像img.src这样的属性没有任何意义,因为没有任何客户端在线路的另一端监听以重新绘制页面。

为此,您应该在客户端和服务器之间使用某种实时流,例如SignalAir。 http://www.asp.net/signalr

答案 1 :(得分:2)

这里有几个可能的问题。第一:

var timer = new System.Threading.Timer((x) => { RefreshMugshots(); }, null, TimeSpan.Zero, TimeSpan.FromMinutes(5));

这是在一个单独的线程上执行的。当您的线程执行时,原始事件已完成,页面已返回到浏览器。不会再发送数据,客户端也不知道事情已经更新。删除时间,然后与其他页面加载逻辑一起运行RefreshMugshots();,看看您的图像是否显示。

第二件事是大多数浏览器对可以存储在HTML图像标记中的base-64编码数据的数量有限制。超出该限制的任何内容都将导致图像无法显示。

不需要处理线程和SignalR的替代(更简单)方法是使用客户端脚本(例如。setInterval(...)来调用返回更新图像的URL的处理程序,然后设置图像适当地在您的DOM元素上获取。

的伪代码:

$(document).ready(function() {
    setInterval(function() {
        var newMugshotUrl = getMugshotUrl(someIdentifier);
        $('#myMugshotImage').attr('src', newMugshotUrl);
    }, 60000);
});