MsChart: ошибка частичного просмотра - PullRequest
0 голосов
/ 16 марта 2010

У меня проблема при использовании Mschart в моем проекте MVC, когда я использую первую индексную страницу проекта для рендеринга для частичного имени представления index2, код -

<% Html.RenderPartial("Index2"); %>

Но когда я запускаю его, возникает ошибка, сообщение которой

CS0029: невозможно неявное преобразование типа «ASP.views_home_index2_ascx» в «System.Web.UI.Page»

- сказано, что проблемная строка кода

: // Визуализация элемента управления диаграммы

Строка 52: Chart2.Page = this; << Здесь </p>

Строка 53: HtmlTextWriter writer = new HtmlTextWriter (Page.Response.Output);

Строка 54: Chart2.RenderControl (писатель);

Но когда я помещаю весь код из Index2.ascx в index.aspx, а не для частичного отображения, он работает нормально

Код Index2.ascx равен

 <%   
            System.Web.UI.DataVisualization.Charting.Chart Chart2 = new System.Web.UI.DataVisualization.Charting.Chart();
            Chart2.Width = 412;
            Chart2.Height = 296;
            Chart2.RenderType = RenderType.ImageTag;

            Chart2.Palette = ChartColorPalette.BrightPastel;
            Title t = new Title("No Code Behind Page", Docking.Top, new System.Drawing.Font("Trebuchet MS", 14, System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(26, 59, 105));
            Chart2.Titles.Add(t);
            Chart2.ChartAreas.Add("Series 1");

            Chart2.Series.Add("Series 1");

            // add points to series 1
            Chart2.Series["Series 1"].Points.AddY(3);
            Chart2.Series["Series 1"].Points.AddY(4);
            Chart2.Series["Series 1"].Points.AddY(5);

            Chart2.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;
            Chart2.BorderColor = System.Drawing.Color.FromArgb(26, 59, 105);
            Chart2.BorderlineDashStyle = ChartDashStyle.Solid;
            Chart2.BorderWidth = 2;

            Chart2.Legends.Add("Legend1");

            // Render chart control
            Chart2.Page = this;
            HtmlTextWriter writer = new HtmlTextWriter(Page.Response.Output);
            Chart2.RenderControl(writer);

%>

1 Ответ

0 голосов
/ 16 марта 2010

Ошибка, похоже, указывает на то, что она должна быть внутри страницы ASP.NET, возможно, из-за изменений в архитектуре MVC и того, что представления не используют коллекцию page / control.

Чтобы упростить этот процесс, вы можете создать вспомогательный метод HTML, который сделает большую часть этой работы за вас многократно используемым способом. Кроме того, вы можете попробовать использовать и просто вставить элемент управления на страницу в качестве альтернативы. Если вы хотите сделать вспомогательный маршрут, вы можете сделать:

public static class ChartExtensions
{
   public static string Chart(this HtmlHelper html, <settings>)
   {
     //Put code here, return a string
   }
}

НТН.

...