Net图表-通过IE7上的jQuery获取会导致图像无法加载
我正在使用和ASP.NETMVC 我试图在页面上显示图表,用户可以更改与此图表关联的各种数据,然后按下按钮执行POST操作,然后返回新渲染的图表。这是通过jQuery刷新的,jQuery加载包含图表的局部视图 我遇到的问题是,在IE7中,我无法找到图像图标。奇怪的是,它在Firefox中运行良好 更新图表的过程:Net图表-通过IE7上的jQuery获取会导致图像无法加载,jquery,asp.net-mvc,internet-explorer-7,asp.net-charts,Jquery,Asp.net Mvc,Internet Explorer 7,Asp.net Charts,我正在使用和ASP.NETMVC 我试图在页面上显示图表,用户可以更改与此图表关联的各种数据,然后按下按钮执行POST操作,然后返回新渲染的图表。这是通过jQuery刷新的,jQuery加载包含图表的局部视图 我遇到的问题是,在IE7中,我无法找到图像图标。奇怪的是,它在Firefox中运行良好 更新图表的过程: 在POST中发送新参数 应用程序更改了图表对象上的参数 控制器将图表对象发送到局部视图,局部视图将其呈现为控件 jQuery然后在这个局部视图中加载。在IE7中,我得到了“未找到图像
- 在POST中发送新参数
- 应用程序更改了图表对象上的参数
- 控制器将图表对象发送到局部视图,局部视图将其呈现为控件
- jQuery然后在这个局部视图中加载。在IE7中,我得到了“未找到图像”图标李>
if (Model.Chart != null)
{
Model.Chart.Page = this.Page;
System.Web.UI.DataVisualization.Charting.Chart Chart1 = Model.Chart;
using (HtmlTextWriter writer = new HtmlTextWriter(this.Response.Output))
{
try
{
Chart1.ImageType = System.Web.UI.DataVisualization.Charting.ChartImageType.Jpeg;
Chart1.RenderControl(writer);
}
catch (Exception ex)
{
writer.WriteEncodedText(ex.Message);
}
}
}
干杯
加载这些图表的jQuery如下所示:
function PostWidgetDataOverride(ChartID) {
$.ajax({
url: "/Home/GetChart",
type: "POST",
dataType: "HTML",
data: { ChartID: ChartID, SeriesID: $('.SeriesID').val(), ParameterDefaults: $('.parameterDefault').serialize(), Time: getTimeStamp() },
success: UpdateChart
});
}
function UpdateChart(ChartContent) {
$("#widgetConfig").dialog("close");
var existingChart = CheckIfWidgetIsOnPage($(ChartContent).attr("id"))
if (existingChart !== undefined) {
existingChart.fadeOut("slow", function() { existingChart.replaceWith(ChartContent); }).fadeIn("slow");
}
else {
$(ChartContent).appendTo($("#dashboardArea")).fadeIn("slow");
}
}
我认为问题在于你如何获得图像。从您发布的代码来看,您似乎是通过ajax下载获得实际的图像数据,然后将新的图像数据插入DOM。这可能适用于Firefox,但不适用于IE(P.S也从未尝试过)。无论如何,假设IE不喜欢这样,那么最好通过image元素的source属性将图像指向图像处理程序。当您需要更改图像时,只需更改发送给handler的url中的参数,当此更改时,IE和Firefox都会请求新图像。例如: HTML
<img src="./chart.aspx?SeriesId=456&ChartId=123&Time=20091021155300" id="chart" />
我将ImageStorageMode更改为:
Chart1.ImageStorageMode = System.Web.UI.DataVisualization.Charting.ImageStorageMode.UseImageLocation
但现在它挂在一个文件夹里。我不希望文件夹被图像堵塞…您可以编写一个服务来清理x天以前的图像,或者您可以使用#SEQ(maxFiles,minutes)设置过期时间,但这在命名方面并不灵活。Chart.RenderControl实际上做什么?在文件夹中创建图像并呈现指向它的html
img
标记?另外,发布jQuery函数会有所帮助。添加了jQuery。尽管这样做似乎效果不错。它生成的图像如下:我得到了一个新的局部视图,返回一块html。还包括图像标签。URL中不包含这些参数。将参数添加到对象,然后将对象发送到渲染它的视图。然后我插入HTML。你能提供更多关于RenderType的信息吗?这个设定是什么?另外,ImageStorageMode设置为什么?RenderType设置为:ImageTag | ImageStorageMode为:UseHttpHandler返回数据时,您是否可以提醒图表内容,然后在IE 7中查看是否直接转到源中指定的URL?
Chart1.ImageStorageMode = System.Web.UI.DataVisualization.Charting.ImageStorageMode.UseImageLocation