0

当我在我的 MVC 项目上使用 Mschart 时遇到问题,当我使用项目的第一个索引页来呈现部分视图名称 index2 时,代码是

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

但是当我运行它时,会发生错误,消息是

CS0029:无法将类型“ASP.views_home_index2_ascx”隐式转换为“System.Web.UI.Page”

- 它说问题代码行是

: // 渲染图表控件

第 52 行:Chart2.Page = this; <<在这里

第 53 行:HtmlTextWriter writer = new HtmlTextWriter(Page.Response.Output);

第 54 行:Chart2.RenderControl(writer);

但是当我将 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);

%>

4

1 回答 1

0

该错误似乎表明它需要位于 ASP.NET 页面中,可能是因为 MVC 体系结构的更改以及视图如何不真正使用页面/控件集合。

为了简化此过程,您可以创建一个 HTML 帮助器方法,该方法以可重用的方式为您完成大部分工作。此外,您也可以尝试使用 a 并将控件嵌入到页面中作为替代方案。如果你想做辅助路由,你可以这样做:

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

HTH。

于 2010-03-16T12:30:21.727 回答