图表流无法正确呈现

时间:2009-11-04 13:21:36

标签: asp.net jquery asp.net-mvc

我的控制器,简而言之就是:

        chart1.SeriesCollection.Add(SC);
        using (MemoryStream ms = chart1.GetChartStream())
        {
            return File(ms.ToArray(), "image/png");
        }

我的观点是:

        $('#targetDiv').load("Home/GetImage");

我渲染时会出现乱码。有什么想法吗?

感谢, rodchar

3 个答案:

答案 0 :(得分:2)

您需要使用img标记:

<img src="Home/GetImage" alt="" />

当您编写$('#targetDiv').load("Home/GetImage");时,您基本上是在说:使用Ajax向Home/GetImage发送GET请求,如果请求成功,则使用结果更新#targetDiv的内容。当您的控制器操作发送二进制数据时,此二进制数据将被注入div。

答案 1 :(得分:1)

您应该设置响应的内容类型,以适应您发回图像的事实。如果你不这样做,你的二进制流将被解释为文本,因此你会得到乱码。

这里有一个相关问题:Can an ASP.NET MVC controller return an Image?

答案 2 :(得分:1)

在您阅读文件并将其发回之前,请尝试将其添加到您的代码中

this.Response.Clear();
this.Response.ContentType = "image/png";

在标记端而不是将内容放入div中,您需要将其放入图像标记中。