一旦定义src一次,使用Controller在IE下失败更改图像src

时间:2012-02-13 18:18:39

标签: c# jquery asp.net-mvc internet-explorer

我使用以下代码使用jQuery重新加载图像:

//Fetch image associated with new image imap.
var reportID = parseInt($('#ReportSelector').val());

$('#HistoricalChart').bind('load', function () {
    alert("loaded");
    $(this).unbind('load');
    $('#ChartLoading').hide();
    $(this).show();
}).bind('error', function () {
    $(this).unbind('error');
    $('#ChartLoading').hide();
    $('#ChartLoadingError').show();
}).attr('src', '../Chart/HistoricalChart?ReportID=' + reportID);

此jQuery链的最后一行表示我希望更改HistoricalChart的src属性。我使用以下Controller操作:

public ActionResult HistoricalChart(int reportID)
{
    LineChart lineChart = (LineChart)Session[string.Format("HistoricalReport: {0}", reportID)];
    MemoryStream memoryStream = lineChart.ConvertToMemoryStream();
    return File(memoryStream, "image/png");
}

这在Chrome下可以100%正常使用。但是,在IE9下,这仅适用于第一次。每次在IE下都会触发“加载”警报 - 只有图像不会改变。

也就是说,我在HistoricalChart方法中设置了一个断点。 HistoricalChart img第一次设置了src - 断点被击中。但是,在此之后,在调用.attr('src',...)后,断点不会被击中。

理想情况下,我不必清除src属性或隐藏图像来解决此问题。我不希望我的图像在与它交互时闪烁。

这是IE的已知限制吗?解决方法?或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

可能是您第二次获得缓存图像。尝试在源网址中添加随机数。

$('#HistoricalChart').bind('load', function () {
    alert("loaded");
    $(this).unbind('load');
    $('#ChartLoading').hide();
    $(this).show();
}).bind('error', function () {
    $(this).unbind('error');
    $('#ChartLoading').hide();
    $('#ChartLoadingError').show();
}).attr('src', '../Chart/HistoricalChart?ReportID=' + reportID 
                                                    + "&r=" + Math.random());