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");
}
}