我正在使用ASP.Net Charting Controls和 ASP.Net MVC。
我试图在页面上显示一个图表,用户可以更改与此图表关联的各种数据,然后按下一个按钮,该按钮将执行 POST 操作,然后返回一个新呈现的图表。这是通过 jQuery 刷新的,它加载包含图表的部分视图。
我遇到的问题是在 IE 7 中我得到了无法找到图像的图标。奇怪的是它在 Firefox 中运行良好!
更新图表的过程:
- 在 POST 中发送新参数
- 应用程序更改图表对象上的参数
- 控制器将图表对象发送到局部视图,使其像控件一样呈现
- jQuery 然后在这个局部视图中加载。在 IE 7 中,我得到未找到图像的图标。
以下是部分视图中用于呈现图表对象的代码:
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");
}
}