Я использую ASP.Net Charting Controls и ASP.Net MVC.
Я пытаюсь отобразить диаграмму на странице, пользователь может изменить различные данные, связанные с этой диаграммой, а затем нажать кнопку, которая выполнит операцию POST, а затем вернет вновь созданную диаграмму. Это обновляется через jQuery, который загружает частичное представление, содержащее диаграмму.
Проблема, с которой я столкнулся, заключается в том, что в IE 7 изображение не может быть найдено. Причудливо это работает отлично в Firefox!
Процесс обновления графика:
- Отправка новых параметров в POST
- Приложение изменило параметры на объекте диаграммы
- Контроллер отправляет объект Chart в частичное представление, которое отображает его как элемент управления
- 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");
}
}