Со вчерашнего дня я пытаюсь запустить пример кода для отображения диаграммы с FusionCharts и Mvc3 Razor, но ничего не получается. Пожалуйста помоги!!! :)
Вот что я сделал:
Я взял проект у Либеро. здесь
После этого я использовал конвертер проекта здесь , чтобы обновить проект с Mvc2 до Mvc3.
Когда я пытаюсь запустить код (F5 и показать результат в браузере), это работает нормально; все графики отображаются правильно.
Если я просто создаю новое представление с помощью бритвы (.cshtml) вместо текущего .aspx (заменяя представление из старого синтаксиса на новую бритву) и пытаюсь отобразить ту же графику, страница отображается правильно, но без графики. Когда я смотрю на исходный код страницы с помощью firebug или каких-либо других инструментов, за сценой не возникает никакого кода. У меня также нет ошибок при поиске с помощью инструмента веб-разработчика в Firefox.
Я только что попытался добавить Html.Raw перед кодом, который генерирует javascript, чтобы не кодировать вывод, и у меня тот же результат. Также пытается вернуть HtmlString, но опять тот же результат; графика не отображается.
Ключ к тому, чтобы не пропустить эту проблему, заключается в том, что если я попробую точно такой же код, но с файлом .aspx, все будет правильно.
В .aspx код выглядит так:
<%=Html.FChart("Chart01", ViewData["MyChart"], 600, 400)%>
И в .cshtml:
@{Html.FChart("Chart01", ViewData["MyChart"], 600, 400); }
И, наконец, html-помощник для генерации этой связки кода:
private static string RenderChart(string controlId, string xmlData, FusionChartBase chart, int width, int height)
{
String sControlId = controlId;
String sJsVarId = "_lib_JS_" + controlId;
String sDivId = "_lib_DIV_" + controlId;
String sObjId = "_lib_OBJ_" + controlId;
String sWidth = width.ToString();
String sHeight = height.ToString();
StringBuilder oBuilder = new StringBuilder();
oBuilder.AppendLine(@"<div id=""" + sDivId + @""" align=""center""></div>");
oBuilder.AppendLine(@"<script type=""text/javascript"">");
oBuilder.AppendLine(@"var " + sControlId + @" = (function() {");
oBuilder.AppendLine(@" return {");
oBuilder.AppendLine(@" containerId: '" + sDivId + "',");
oBuilder.AppendLine(@" xmlData: '',");
oBuilder.AppendLine(@" chartType: '',");
oBuilder.AppendLine(@" showChart: function() {");
oBuilder.AppendLine();
oBuilder.AppendFormat(@" var chartURL = '{0}' + this.chartType.replace('Chart', '{1}');", UrlSWF, SufixSWF);
oBuilder.AppendLine(@" var " + sJsVarId + @" = new FusionCharts(chartURL, """ + sObjId + @""", """ + sWidth + @""", """ + sHeight + @""");");
oBuilder.AppendLine(@" " + sJsVarId + @".setDataXML(this.xmlData);");
oBuilder.AppendLine(@" " + sJsVarId + @".render(""" + sDivId + @""");");
oBuilder.AppendLine(@" }");
oBuilder.AppendLine(@" }");
oBuilder.AppendLine(@"})();");
oBuilder.AppendLine(@"setTimeout(function(){");
oBuilder.AppendLine(@" " + sControlId + @".xmlData = """ + xmlData.Replace(@"""", @"'") + @""";");
oBuilder.AppendLine(@" " + sControlId + @".chartType = """ + chart.ChartType + @""";");
oBuilder.AppendLine(@" " + sControlId + @".showChart();");
oBuilder.AppendLine(@"},0);");
oBuilder.AppendLine(@"</script>");
return oBuilder.ToString();
}
Я не знаю, нужно ли мне устанавливать некоторые параметры конфигурации в файле web.config или что я не понимаю в поведении Mvc2 по сравнению с Mvc3, но это очень расстраивает.
Если у вас есть идеи, большое спасибо заранее.